ExtMfcDef.h
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:23k
源码类别:

界面编程

开发平台:

Visual C++

  1. // This is part of the Professional User Interface Suite library.
  2. // Copyright (C) 2001-2009 FOSS Software, Inc.
  3. // All rights reserved.
  4. //
  5. // http://www.prof-uis.com
  6. // mailto:support@prof-uis.com
  7. //
  8. // This source code can be used, modified and redistributed
  9. // under the terms of the license agreement that is included
  10. // in the Professional User Interface Suite package.
  11. //
  12. // Warranties and Disclaimers:
  13. // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
  14. // INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
  15. // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  16. // IN NO EVENT WILL FOSS SOFTWARE INC. BE LIABLE FOR ANY DIRECT,
  17. // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES,
  18. // INCLUDING DAMAGES FOR LOSS OF PROFITS, LOSS OR INACCURACY OF DATA,
  19. // INCURRED BY ANY PERSON FROM SUCH PERSON'S USAGE OF THIS SOFTWARE
  20. // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  21. #if (!defined __EXT_MFC_DEF_H)
  22. #define __EXT_MFC_DEF_H
  23. #define __EXTMFC_ALL_FORM_MOVABLE_WND_STYLES (0x0000FFFFL)
  24. // disable warning 4201
  25. #pragma warning( push )
  26. #pragma warning ( disable : 4201 )
  27. #include <mmsystem.h>
  28. // rollback warning 4201
  29. #pragma warning( pop )
  30. #include <stdlib.h>
  31. #include <math.h>
  32. // __PROF_UIS_VERSION_DWORD is required for static library builds
  33. #define __PROF_UIS_VERSION_DWORD    DWORD( 0x02080800 )
  34. #define __PROF_UIS_VERSION                 0x02080800
  35. // the multiple monitor stub can be included into the library
  36. // builds (used in ExtPaintManager.cpp to define
  37. // COMPILE_MULTIMON_STUBS symbol before include multimon.h)
  38. #if ( (defined _AFXDLL) || ( _MFC_VER >= 0x1000 ) )
  39. #define __PROF_UIS_BUILTIN_MULTIMON_STUB
  40. #endif
  41. #if _MFC_VER <= 0x710
  42. #pragma message("   Prof-UIS multiple monitor support:")
  43. #if (defined __PROF_UIS_BUILTIN_MULTIMON_STUB)
  44. #pragma message("      built-in")
  45. #else
  46. #pragma message("      external")
  47. #endif // __PROF_UIS_BUILTIN_MULTIMON_STUB
  48. #endif
  49. // Prof-UIS basic library
  50. #if (defined _AFXDLL)
  51. #if (defined __STATPROFUIS_WITH_DLLMFC__)
  52. #if (defined __PROF_UIS_FOR_REGULAR_DLL)
  53. #define __PROF_UIS_PERFORMS_STATE_MANAGING
  54. #if (defined _DEBUG)
  55. #if (defined _UNICODE)
  56. #define __PROF_UIS_LIB_NAME    "ProfUIS288yud-RDE.lib"
  57. #elif (defined _MBCS)
  58. #define __PROF_UIS_LIB_NAME    "ProfUIS288ymd-RDE.lib"
  59. #else
  60. #define __PROF_UIS_LIB_NAME    "ProfUIS288ynd-RDE.lib"
  61. #endif // _UNICODE
  62. #else
  63. #if (defined _UNICODE)
  64. #define __PROF_UIS_LIB_NAME    "ProfUIS288yu-RDE.lib"
  65. #elif (defined _MBCS)
  66. #define __PROF_UIS_LIB_NAME    "ProfUIS288ym-RDE.lib"
  67. #else
  68. #define __PROF_UIS_LIB_NAME    "ProfUIS288yn-RDE.lib"
  69. #endif // _UNICODE
  70. #endif // _DEBUG
  71. #else
  72. #define __PROF_UIS_MANAGE_STATE AFX_MANAGE_STATE( ::AfxGetAppModuleState() )
  73. #if (defined _DEBUG)
  74. #if (defined _UNICODE)
  75. #define __PROF_UIS_LIB_NAME    "ProfUIS288yud.lib"
  76. #elif (defined _MBCS)
  77. #define __PROF_UIS_LIB_NAME    "ProfUIS288ymd.lib"
  78. #else
  79. #define __PROF_UIS_LIB_NAME    "ProfUIS288ynd.lib"
  80. #endif // _UNICODE
  81. #else
  82. #if (defined _UNICODE)
  83. #define __PROF_UIS_LIB_NAME    "ProfUIS288yu.lib"
  84. #elif (defined _MBCS)
  85. #define __PROF_UIS_LIB_NAME    "ProfUIS288ym.lib"
  86. #else
  87. #define __PROF_UIS_LIB_NAME    "ProfUIS288yn.lib"
  88. #endif // _UNICODE
  89. #endif // _DEBUG
  90. #endif // else from (defined __PROF_UIS_FOR_REGULAR_DLL)
  91. #else
  92. #define __PROF_UIS_PERFORMS_STATE_MANAGING
  93. #if (defined __PROF_UIS_IMPL__)
  94. #define __PROF_UIS_STATE_MANAGER_DECL _declspec(dllexport)
  95. #else
  96. #define __PROF_UIS_STATE_MANAGER_DECL _declspec(dllimport)
  97. #endif // (defined __PROF_UIS_IMPL__)
  98. #if (defined __PROF_UIS_FOR_REGULAR_DLL)
  99. #if (defined _DEBUG)
  100. #if (defined _UNICODE)
  101. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288ud-RDE.dll")
  102. #define __PROF_UIS_LIB_NAME    "ProfUIS288ud-RDE.lib"
  103. #elif (defined _MBCS)
  104. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288md-RDE.dll")
  105. #define __PROF_UIS_LIB_NAME    "ProfUIS288md-RDE.lib"
  106. #else
  107. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288nd-RDE.dll")
  108. #define __PROF_UIS_LIB_NAME    "ProfUIS288nd-RDE.lib"
  109. #endif // _UNICODE
  110. #else
  111. #if (defined _UNICODE)
  112. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288u-RDE.dll")
  113. #define __PROF_UIS_LIB_NAME    "ProfUIS288u-RDE.lib"
  114. #elif (defined _MBCS)
  115. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288m-RDE.dll")
  116. #define __PROF_UIS_LIB_NAME    "ProfUIS288m-RDE.lib"
  117. #else
  118. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288n-RDE.dll")
  119. #define __PROF_UIS_LIB_NAME    "ProfUIS288n-RDE.lib"
  120. #endif // _UNICODE
  121. #endif // _DEBUG
  122. #else
  123. #if (defined _DEBUG)
  124. #if (defined _UNICODE)
  125. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288ud.dll")
  126. #define __PROF_UIS_LIB_NAME    "ProfUIS288ud.lib"
  127. #elif (defined _MBCS)
  128. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288md.dll")
  129. #define __PROF_UIS_LIB_NAME    "ProfUIS288md.lib"
  130. #else
  131. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288nd.dll")
  132. #define __PROF_UIS_LIB_NAME    "ProfUIS288nd.lib"
  133. #endif // _UNICODE
  134. #else
  135. #if (defined _UNICODE)
  136. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288u.dll")
  137. #define __PROF_UIS_LIB_NAME    "ProfUIS288u.lib"
  138. #elif (defined _MBCS)
  139. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288m.dll")
  140. #define __PROF_UIS_LIB_NAME    "ProfUIS288m.lib"
  141. #else
  142. #define __PROF_UIS_MODULE_NAME _T("ProfUIS288n.dll")
  143. #define __PROF_UIS_LIB_NAME    "ProfUIS288n.lib"
  144. #endif // _UNICODE
  145. #endif // _DEBUG
  146. #endif // else from (defined __PROF_UIS_FOR_REGULAR_DLL)
  147. #endif // __STATPROFUIS_WITH_DLLMFC__
  148. #else
  149. #if (defined __PROF_UIS_FOR_REGULAR_DLL)
  150. #define __PROF_UIS_PERFORMS_STATE_MANAGING
  151. #if (defined _DEBUG)
  152. #if (defined _UNICODE)
  153. #define __PROF_UIS_LIB_NAME    "ProfUIS288sud-RDE.lib"
  154. #elif (defined _MBCS)
  155. #define __PROF_UIS_LIB_NAME    "ProfUIS288smd-RDE.lib"
  156. #else
  157. #define __PROF_UIS_LIB_NAME    "ProfUIS288snd-RDE.lib"
  158. #endif // _UNICODE
  159. #else
  160. #if (defined _UNICODE)
  161. #define __PROF_UIS_LIB_NAME    "ProfUIS288su-RDE.lib"
  162. #elif (defined _MBCS)
  163. #define __PROF_UIS_LIB_NAME    "ProfUIS288sm-RDE.lib"
  164. #else
  165. #define __PROF_UIS_LIB_NAME    "ProfUIS288sn-RDE.lib"
  166. #endif // _UNICODE
  167. #endif // _DEBUG
  168. #else
  169. #define __PROF_UIS_MANAGE_STATE AFX_MANAGE_STATE( ::AfxGetAppModuleState() )
  170. #if (defined _DEBUG)
  171. #if (defined _UNICODE)
  172. #define __PROF_UIS_LIB_NAME    "ProfUIS288sud.lib"
  173. #elif (defined _MBCS)
  174. #define __PROF_UIS_LIB_NAME    "ProfUIS288smd.lib"
  175. #else
  176. #define __PROF_UIS_LIB_NAME    "ProfUIS288snd.lib"
  177. #endif // _UNICODE
  178. #else
  179. #if (defined _UNICODE)
  180. #define __PROF_UIS_LIB_NAME    "ProfUIS288su.lib"
  181. #elif (defined _MBCS)
  182. #define __PROF_UIS_LIB_NAME    "ProfUIS288sm.lib"
  183. #else
  184. #define __PROF_UIS_LIB_NAME    "ProfUIS288sn.lib"
  185. #endif // _UNICODE
  186. #endif // _DEBUG
  187. #endif // else from (defined __PROF_UIS_FOR_REGULAR_DLL)
  188. #endif // _AFXDLL
  189. #if (defined __PROF_UIS_IMPL__)
  190. #if (!defined __EXT_PROFUIS_STATIC_LINK)
  191. #define __PROF_UIS_API _declspec(dllexport)
  192. #else
  193. #define __PROF_UIS_API
  194. #endif // _AFXDLL
  195. #else 
  196. #if (!defined __EXT_PROFUIS_STATIC_LINK)
  197. #define __PROF_UIS_API _declspec(dllimport)
  198. #else
  199. #define __PROF_UIS_API
  200. #endif // _AFXDLL
  201. #pragma message("   Automatically linking with Prof-UIS library: " __PROF_UIS_LIB_NAME )
  202. #pragma message("      (Professional User Interface Suite)")
  203. #pragma comment( lib, __PROF_UIS_LIB_NAME ) 
  204. #endif
  205. #if (defined __PROF_UIS_PERFORMS_STATE_MANAGING)
  206. #if (! defined __PROF_UIS_STATE_MANAGER_DECL)
  207. #define __PROF_UIS_STATE_MANAGER_DECL
  208. #endif
  209. struct AFX_MAINTAIN_STATE2;
  210. class AFX_MODULE_STATE;
  211. class __PROF_UIS_STATE_MANAGER_DECL CExt_ProfUIS_ModuleState
  212. {
  213. static AFX_MODULE_STATE * g_pExternalModuleState;
  214. AFX_MAINTAIN_STATE2 * m_pAfxState;
  215. public:
  216. CExt_ProfUIS_ModuleState();
  217. virtual ~CExt_ProfUIS_ModuleState();
  218. static void InitExtension(
  219. AFX_MODULE_STATE * pExternalModuleState = NULL
  220. );
  221. }; // class CExt_ProfUIS_ModuleState
  222. #define __PROF_UIS_MANAGE_STATE CExt_ProfUIS_ModuleState the_ProfUIS_ModuleState
  223. #endif // __PROF_UIS_PERFORMS_STATE_MANAGING
  224. // Prof-UIS registry names
  225. #define __PROF_UIS_REG_SECTION _T("ProfUIS")
  226. #define __PROF_UIS_REG_PROFILES _T("Profiles")
  227. #define __PROF_UIS_REG_COMMAND_MANAGER _T("CommandManager")
  228. #define __PROF_UIS_REG_CONTROL_BAR _T("ControlBar")
  229. #define __PROF_UIS_REG_DBS _T("DynamicBarSite")
  230. #define __PROF_UIS_REG_CUSTOMIZATION _T("Customization")
  231. #define __PROF_UIS_REG_REPORT_GRID _T("ReportGrid")
  232. #define __PROF_UIS_REG_PAINT_MANAGER _T("PaintManager")
  233. #define __PROF_UIS_REG_GRID_FILTER _T("GridFilter")
  234. #define __PROF_UIS_REG_REPORT_GRID_FILTER _T("ReportGridFilter")
  235. #define __PROF_UIS_REG_SHELL_ITEM_ID _T("ShellItem")
  236. #define __PROF_UIS_REG_SHELL_FILE_DIALOG_INTERRIOR _T("FileDialogInterrior")
  237. /////////////////////////////////////////////////////////////////////////
  238. // Workaround for the 4996 warning ( 'function' was declared deprecated )
  239. // in MFC version 8.00
  240. /////////////////////////////////////////////////////////////////////////
  241. inline void __EXT_MFC_MEMCPY(
  242. void * dest,
  243. size_t sizeInBytes,
  244. const void * src,
  245. size_t count 
  246. {
  247. #if _MFC_VER >= 0x0800
  248. memcpy_s( dest, sizeInBytes, src, count );
  249. #else
  250. memcpy( dest, src, count );
  251. sizeInBytes;
  252. #endif
  253. }
  254. inline void __EXT_MFC_MEMMOVE(
  255. void * dest,
  256. size_t sizeInBytes,
  257. const void * src,
  258. size_t count 
  259. {
  260. #if _MFC_VER >= 0x0800
  261. memmove_s( dest, sizeInBytes, src, count );
  262. #else
  263. memmove( dest, src, count );
  264. sizeInBytes;
  265. #endif
  266. }
  267. inline void __EXT_MFC_LTOA(
  268. LONG nValue,
  269. TCHAR * strBuffer, 
  270. size_t nSizeOfStr, 
  271. INT nRadix
  272. {
  273. #if _MFC_VER >= 0x0800
  274. _ltot_s( nValue, strBuffer, nSizeOfStr, nRadix );
  275. #else
  276. _ltot( nValue, strBuffer, nRadix );
  277. nSizeOfStr;
  278. #endif
  279. }
  280. inline void __EXT_MFC_ULTOA(
  281. ULONG nValue,
  282. TCHAR * strBuffer, 
  283. size_t nSizeOfStr, 
  284. INT nRadix
  285. {
  286. #if _MFC_VER >= 0x0800
  287. _ultot_s( nValue, strBuffer, nSizeOfStr, nRadix );
  288. #else
  289. _ultot( nValue, strBuffer, nRadix );
  290. nSizeOfStr;
  291. #endif
  292. }
  293. inline void __EXT_MFC_ITOA(
  294. INT nValue,
  295. TCHAR * strBuffer, 
  296. size_t nSizeInCharacters, 
  297. INT nRadix
  298. {
  299. #if _MFC_VER >= 0x0800
  300. _itot_s( nValue, strBuffer, nSizeInCharacters, nRadix );
  301. #else
  302. _itot( nValue, strBuffer, nRadix );
  303. nSizeInCharacters;
  304. #endif
  305. }
  306. inline void __EXT_MFC_I64TOA(
  307. __int64 nValue,
  308. TCHAR * strBuffer, 
  309. size_t nSizeInCharacters, 
  310. INT nRadix
  311. {
  312. #if _MFC_VER >= 0x0800
  313. _i64tot_s( nValue, strBuffer, nSizeInCharacters, nRadix );
  314. #else
  315. _i64tot( nValue, strBuffer, nRadix );
  316. nSizeInCharacters;
  317. #endif
  318. }
  319. inline void __EXT_MFC_UI64TOA(
  320. __int64 nValue,
  321. TCHAR * strBuffer, 
  322. size_t nSizeInCharacters, 
  323. INT nRadix
  324. {
  325. #if _MFC_VER >= 0x0800
  326. _ui64tot_s( nValue, strBuffer, nSizeInCharacters, nRadix );
  327. #else
  328. _ui64tot( nValue, strBuffer, nRadix );
  329. nSizeInCharacters;
  330. #endif
  331. }
  332. inline void __EXT_MFC_STRCPY(
  333. TCHAR * strDest, 
  334. size_t nSize, 
  335. const TCHAR * strSource
  336. {
  337. #if _MFC_VER >= 0x0800
  338. _tcscpy_s( strDest, nSize, strSource );
  339. #else
  340. _tcscpy( strDest, strSource );
  341. nSize;
  342. #endif
  343. }
  344. inline void __EXT_MFC_STRCAT(
  345. TCHAR * strDest, 
  346. size_t nSize, 
  347. const TCHAR * strSource
  348. {
  349. #if _MFC_VER >= 0x0800
  350. _tcscat_s( strDest, nSize, strSource );
  351. #else
  352. _tcscat( strDest, strSource );
  353. nSize;
  354. #endif
  355. }
  356. inline void __EXT_MFC_STRLWR(
  357. TCHAR * str, 
  358. size_t nSize
  359. {
  360. #if _MFC_VER >= 0x0800
  361. _tcslwr_s( str, nSize );
  362. #else
  363. _tcslwr( str );
  364. nSize;
  365. #endif
  366. }
  367. inline void __EXT_MFC_STRUPR(
  368. TCHAR * str, 
  369. size_t nSize
  370. {
  371. #if _MFC_VER >= 0x0800
  372. _tcsupr_s( str, nSize );
  373. #else
  374. _tcsupr( str );
  375. nSize;
  376. #endif
  377. }
  378. #if _MFC_VER >= 0x0800
  379. #define __EXT_MFC_STSCANF _stscanf_s
  380. #define __EXT_MFC_STSCANF_PARAM( buffer, sizeOfBuffer ) buffer, sizeOfBuffer 
  381. #else
  382. #define __EXT_MFC_STSCANF _stscanf
  383. #define __EXT_MFC_STSCANF_PARAM( buffer, sizeOfBuffer ) buffer
  384. #endif
  385. inline void __EXT_MFC_STRNCPY(
  386. TCHAR * strDest, 
  387. size_t nSize, 
  388. const TCHAR * strSource, 
  389. size_t count
  390. {
  391. #if _MFC_VER >= 0x0800
  392. _tcsncpy_s( strDest, nSize, strSource, count );
  393. #else
  394. _tcsncpy( strDest, strSource, count );
  395. nSize;
  396. #endif
  397. }
  398. inline wchar_t * __EXT_MFC_WCSLWR(
  399. wchar_t * str, 
  400. size_t nSize
  401. {
  402. #if _MFC_VER >= 0x0800
  403. _wcslwr_s( str, nSize );
  404. return str;
  405. #else
  406. nSize;
  407. return _wcslwr( str );
  408. #endif
  409. }
  410. inline wchar_t * __EXT_MFC_WCSUPR(
  411. wchar_t * str, 
  412. size_t nSize
  413. {
  414. #if _MFC_VER >= 0x0800
  415. _wcsupr_s( str, nSize );
  416. return str;
  417. #else
  418. nSize;
  419. return _wcsupr( str );
  420. #endif
  421. }
  422. inline wchar_t * __EXT_MFC_WCSCPY(
  423. wchar_t * strDest, 
  424. size_t nSize,
  425. const wchar_t * strSource 
  426. {
  427. #if _MFC_VER >= 0x0800
  428. wcscpy_s( strDest, nSize, strSource );
  429. return strDest;
  430. #else
  431. nSize;
  432. return wcscpy( strDest, strSource );
  433. #endif
  434. }
  435. inline void __EXT_MFC_SPLITPATH(
  436. const TCHAR * path,
  437. TCHAR * drive,
  438. size_t driveSizeInCharacters,
  439. TCHAR * dir,
  440. size_t dirSizeInCharacters,
  441. TCHAR * fname,
  442. size_t nameSizeInCharacters,
  443. TCHAR * ext, 
  444. size_t extSizeInBytes
  445. {
  446. #if _MFC_VER >= 0x0800
  447. _tsplitpath_s( 
  448. path, 
  449. drive, driveSizeInCharacters, 
  450. dir, dirSizeInCharacters,
  451. fname, nameSizeInCharacters,
  452. ext, extSizeInBytes 
  453. );
  454. #else
  455. _tsplitpath( 
  456. path, 
  457. drive, 
  458. dir, 
  459. fname, 
  460. ext 
  461. );
  462. driveSizeInCharacters;
  463. dirSizeInCharacters;
  464. nameSizeInCharacters;
  465. extSizeInBytes;
  466. #endif
  467. }
  468. inline void __EXT_MFC_ITOA( int nVal, LPTSTR str, int nCountOfChars, int nRadix )
  469. {
  470. #if _MFC_VER >= 0x0800
  471. _itot_s( nVal, str, nCountOfChars, nRadix );
  472. #else
  473. nCountOfChars;
  474. _itot( nVal, str, nRadix );
  475. #endif
  476. }
  477. inline void __EXT_MFC_SwapLeftRight( LPRECT pRect )
  478. {
  479. ASSERT( pRect != NULL );
  480. LONG nTmp = pRect->left;
  481. pRect->left = pRect->right;
  482. pRect->right = nTmp;
  483. }
  484. inline void __EXT_MFC_SwapLeftRight( RECT & _rect )
  485. {
  486. __EXT_MFC_SwapLeftRight( &_rect );
  487. }
  488. #if _MFC_VER >= 0x0800
  489. #define __EXT_MFC_SPRINTF _stprintf_s
  490. #define __EXT_MFC_SPRINTF_PARAM( buffer, sizeOfBuffer ) buffer, sizeOfBuffer 
  491. #else
  492. #define __EXT_MFC_SPRINTF _stprintf
  493. #define __EXT_MFC_SPRINTF_PARAM( buffer, sizeOfBuffer ) buffer
  494. #endif
  495. #if _MFC_VER >= 0x0800
  496. #define __EXT_MFC_VSPRINTF _vstprintf_s
  497. #define __EXT_MFC_VSPRINTF_PARAM( buffer, sizeOfBuffer ) buffer, sizeOfBuffer 
  498. #else
  499. #define __EXT_MFC_VSPRINTF _vstprintf
  500. #define __EXT_MFC_VSPRINTF_PARAM( buffer, sizeOfBuffer ) buffer
  501. #endif
  502. // Prof-UIS native Unicode character type support for VC++ .NET 2002 or later
  503. #if (!defined __ExtMfcSafeNativeTCHAR_H)
  504. #include <ExtMfcSafeNativeTCHAR.h>
  505. #endif
  506. #if (!defined _AFX_NO_OLE_SUPPORT)
  507. #if (!defined __AFXCTL_H__)
  508. #include <AfxCtl.h>     // MFC OLE Control support
  509. #endif
  510. #define DECLARE_PROF_UIS_WINDOW_METHODS 
  511. virtual bool OnQueryWindowEnabledState() const 
  512. ASSERT_VALID( this ); 
  513. ASSERT_KINDOF( CWnd, this ); 
  514. ASSERT( GetSafeHwnd() != NULL && ::IsWindow(GetSafeHwnd()) ); 
  515. bool bEnabled = IsWindowEnabled() ? true : false; 
  516. CWnd * pWndParent = GetParent(); 
  517. if( pWndParent != NULL ) 
  518. COleControl * pOleControl = 
  519. DYNAMIC_DOWNCAST( COleControl, pWndParent ); 
  520. if( pOleControl != NULL ) 
  521. if( pOleControl->AmbientUserMode() == FALSE ) 
  522. return true; 
  523. return bEnabled; 
  524. }
  525. #else
  526. #define DECLARE_PROF_UIS_WINDOW_METHODS 
  527. virtual bool OnQueryWindowEnabledState() const 
  528. ASSERT_VALID( this ); 
  529. ASSERT_KINDOF( CWnd, this ); 
  530. ASSERT( GetSafeHwnd() != NULL && ::IsWindow(GetSafeHwnd()) ); 
  531. bool bEnabled = IsWindowEnabled() ? true : false; 
  532. return bEnabled; 
  533. }
  534. #endif // _AFX_NO_OLE_SUPPORT
  535. class CExtPaintManager;
  536. class __PROF_UIS_API CExtPmBridge
  537. {
  538. public:
  539. CExtPmBridge()
  540. {
  541. }
  542. virtual ~CExtPmBridge()
  543. {
  544. }
  545. virtual void PmBridge_Install(
  546. bool bAddTail = true
  547. ) = 0;
  548. virtual void PmBridge_Uninstall() = 0;
  549. virtual HWND PmBridge_GetSafeHwnd() const = 0;
  550. virtual CExtPaintManager * PmBridge_GetPM() const = 0;
  551. virtual void PmBridge_OnPaintManagerChanged(
  552. CExtPaintManager * pGlobalPM
  553. )
  554. {
  555. CExtPaintManager * pLocalPM =
  556. PmBridge_GetPM();
  557. if( LPVOID(pGlobalPM) != LPVOID(pLocalPM) )
  558. return;
  559. HWND hWndOwn = PmBridge_GetSafeHwnd();
  560. if( hWndOwn == NULL )
  561. return;
  562. ASSERT( ::IsWindow( hWndOwn ) );
  563. ::SetWindowPos(
  564. hWndOwn, NULL, 0, 0, 0, 0,
  565. SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE
  566. |SWP_NOZORDER|SWP_NOOWNERZORDER
  567. |SWP_FRAMECHANGED
  568. );
  569. ::RedrawWindow(
  570. hWndOwn,
  571. NULL,
  572. NULL,
  573. RDW_INVALIDATE|RDW_ERASE|RDW_ALLCHILDREN
  574. );
  575. }
  576. virtual void PmBridge_OnSysColorChange(
  577. CExtPaintManager * pGlobalPM,
  578. CWnd * pWndNotifySrc
  579. )
  580. {
  581. pGlobalPM;
  582. pWndNotifySrc;
  583. }
  584. virtual void PmBridge_OnSettingChange(
  585. CExtPaintManager * pGlobalPM,
  586. CWnd * pWndNotifySrc,
  587. UINT uFlags,
  588. __EXT_MFC_SAFE_LPCTSTR lpszSection
  589. )
  590. {
  591. pGlobalPM;
  592. pWndNotifySrc;
  593. uFlags;
  594. lpszSection;
  595. }
  596. virtual void PmBridge_OnDisplayChange(
  597. CExtPaintManager * pGlobalPM,
  598. CWnd * pWndNotifySrc,
  599. INT nDepthBPP,
  600. CPoint ptSizes
  601. )
  602. {
  603. pGlobalPM;
  604. pWndNotifySrc;
  605. nDepthBPP;
  606. ptSizes;
  607. }
  608. virtual void PmBridge_OnThemeChanged(
  609. CExtPaintManager * pGlobalPM,
  610. CWnd * pWndNotifySrc,
  611. WPARAM wParam,
  612. LPARAM lParam
  613. )
  614. {
  615. pGlobalPM;
  616. pWndNotifySrc;
  617. wParam;
  618. lParam;
  619. }
  620. }; // class CExtPmBridge
  621. #define DECLARE_CExtPmBridge_MEMBERS_GENERIC( __class_name__ ) 
  622. virtual void PmBridge_Install( 
  623. bool bAddTail = true 
  624. ); 
  625. virtual void PmBridge_Uninstall(); 
  626. virtual CExtPaintManager * PmBridge_GetPM() const;
  627. #define DECLARE_CExtPmBridge_MEMBERS( __class_name__ ) 
  628. DECLARE_CExtPmBridge_MEMBERS_GENERIC( __class_name__ ) 
  629. virtual HWND PmBridge_GetSafeHwnd() const;
  630. #define IMPLEMENT_CExtPmBridge_MEMBERS_INSTALL_UNINSTALL( __class_name__ ) 
  631. void __class_name__ :: PmBridge_Install( 
  632. bool bAddTail /* = true */ 
  633. g_PaintManager.Advise( 
  634. static_cast < CExtPmBridge * > ( this ), 
  635. bAddTail 
  636. ); 
  637. void __class_name__ :: PmBridge_Uninstall() 
  638. g_PaintManager.Unadvise( 
  639. static_cast < CExtPmBridge * > ( this ) 
  640. ); 
  641. }
  642. #define IMPLEMENT_CExtPmBridge_MEMBERS_GENERIC( __class_name__ ) 
  643. IMPLEMENT_CExtPmBridge_MEMBERS_INSTALL_UNINSTALL( __class_name__ ); 
  644. CExtPaintManager * __class_name__ :: PmBridge_GetPM() const 
  645. return g_PaintManager.GetPM(); 
  646. }
  647. #define IMPLEMENT_CExtPmBridge_MEMBERS( __class_name__ ) 
  648. IMPLEMENT_CExtPmBridge_MEMBERS_GENERIC( __class_name__ ); 
  649. HWND __class_name__ :: PmBridge_GetSafeHwnd() const 
  650. return NULL; 
  651. }
  652. #if (!defined LAYOUT_RTL)
  653. #define LAYOUT_RTL 0x00000001
  654. #endif // (!defined LAYOUT_RTL)
  655. #if (!defined LAYOUT_LTR)
  656. #define LAYOUT_LTR 0x00000000
  657. #endif // (!defined LAYOUT_LTR)
  658. #if (!defined NOMIRRORBITMAP)
  659. #define NOMIRRORBITMAP 0x80000000
  660. #endif // (!defined NOMIRRORBITMAP)
  661. #if (!defined LAYOUT_BITMAPORIENTATIONPRESERVED)
  662. #define LAYOUT_BITMAPORIENTATIONPRESERVED 0x80000000
  663. #endif // (!defined LAYOUT_BITMAPORIENTATIONPRESERVED)
  664. #if (!defined WS_EX_LAYOUTRTL)
  665. #define WS_EX_LAYOUTRTL 0x00400000L
  666. #endif // (!defined WS_EX_LAYOUTRTL)
  667. #if (!defined WS_EX_LAYOUT_RTL)
  668. #define WS_EX_LAYOUT_RTL WS_EX_LAYOUTRTL
  669. #endif // (!defined WS_EX_LAYOUT_RTL)
  670. #if (!defined WS_EX_NOINHERITLAYOUT)
  671. #define WS_EX_NOINHERITLAYOUT 0x00100000L
  672. #endif // (!defined WS_EX_NOINHERITLAYOUT)
  673. #if (!defined WS_EX_NOINHERIT_LAYOUT)
  674. #define WS_EX_NOINHERIT_LAYOUT WS_EX_NOINHERITLAYOUT
  675. #endif // (!defined WS_EX_NOINHERIT_LAYOUT)
  676. #if _MFC_VER <= 0x710
  677. #define __EXT_MFC_ON_WM_NCHITTEST() ON_WM_NCHITTEST()
  678. #else
  679. #define __EXT_MFC_ON_WM_NCHITTEST() 
  680. { WM_NCHITTEST, 0, 0, 0, AfxSig_l_p, 
  681. (AFX_PMSG)(AFX_PMSGW) 
  682. (static_cast < UINT (AFX_MSG_CALL CWnd::*)(CPoint) > (&ThisClass :: OnNcHitTest)) },
  683. #endif
  684. #if (!defined __EXT_MFC_INT_PTR)
  685. #if _MFC_VER < 0x700
  686. #define __EXT_MFC_INT_PTR INT
  687. #define __EXT_MFC_UINT_PTR UINT
  688. #define __EXT_MFC_LONG_PTR LONG
  689. #define __EXT_MFC_ULONG_PTR ULONG
  690. #define __EXT_MFC_ULONG_SIZE_T ULONG
  691. #define __EXT_MFC_GetClassLong GetClassLong
  692. #define __EXT_MFC_SetClassLong SetClassLong
  693. #define __EXT_MFC_GetWindowLong GetWindowLong
  694. #define __EXT_MFC_SetWindowLong SetWindowLong
  695. #else
  696. #define __EXT_MFC_INT_PTR INT_PTR
  697. #define __EXT_MFC_UINT_PTR UINT_PTR
  698. #define __EXT_MFC_LONG_PTR LONG_PTR
  699. #define __EXT_MFC_ULONG_PTR ULONG_PTR
  700. #if defined(_WIN64)
  701. #define __EXT_MFC_ULONG_SIZE_T SIZE_T
  702. #else
  703. #define __EXT_MFC_ULONG_SIZE_T ULONG
  704. #endif
  705. #define __EXT_MFC_GetClassLong GetClassLongPtr
  706. #define __EXT_MFC_SetClassLong SetClassLongPtr
  707. #define __EXT_MFC_GetWindowLong GetWindowLongPtr
  708. #define __EXT_MFC_SetWindowLong SetWindowLongPtr
  709. #endif
  710. #define __EXT_MFC_DWORD_PTR __EXT_MFC_ULONG_PTR
  711. #endif
  712. #if _MFC_VER >= 0x900
  713. #ifndef HRAWINPUT
  714. #define HRAWINPUT DWORD
  715. #endif
  716. struct tagMENUGETOBJECTINFO;
  717. typedef tagMENUGETOBJECTINFO MENUGETOBJECTINFO;
  718. typedef tagMENUGETOBJECTINFO * PMENUGETOBJECTINFO;
  719. #endif
  720. #if _MFC_VER < 0x900
  721. #define __EXT_MFC_IDC_STATIC IDC_STATIC
  722. #else
  723. // #define __EXT_MFC_IDC_STATIC (1)
  724. #define __EXT_MFC_IDC_STATIC (32766)
  725. #endif
  726. #if (!defined __EXT_MFC_GWL_WNDPROC)
  727. #define __EXT_MFC_GWL_WNDPROC (-4)
  728. #define __EXT_MFC_GWL_HINSTANCE (-6)
  729. #define __EXT_MFC_GWL_HWNDPARENT (-8)
  730. #define __EXT_MFC_GWL_STYLE (-16)
  731. #define __EXT_MFC_GWL_EXSTYLE (-20)
  732. #define __EXT_MFC_GWL_USERDATA (-21)
  733. #define __EXT_MFC_GWL_ID (-12)
  734. #define __EXT_MFC_GCL_MENUNAME (-8)
  735. #define __EXT_MFC_GCL_HBRBACKGROUND (-10)
  736. #define __EXT_MFC_GCL_HCURSOR (-12)
  737. #define __EXT_MFC_GCL_HICON (-14)
  738. #define __EXT_MFC_GCL_HMODULE (-16)
  739. #define __EXT_MFC_GCL_CBWNDEXTRA (-18)
  740. #define __EXT_MFC_GCL_CBCLSEXTRA (-20)
  741. #define __EXT_MFC_GCL_WNDPROC (-24)
  742. #define __EXT_MFC_GCL_STYLE (-26)
  743. #define __EXT_MFC_GCW_ATOM (-32)
  744. #define __EXT_MFC_GCL_HICONSM (-34)
  745. #endif
  746. #define __EXT_MFC_WM_MOUSEFIRST 0x0200
  747. #define __EXT_MFC_WM_MOUSELAST 0x0209
  748. #define __EXT_MFC_CX_BORDER 1
  749. #define __EXT_MFC_CY_BORDER 1
  750. #define __EXT_MFC_WM_NCUAHDRAWCAPTION 0xAE
  751. #define __EXT_MFC_WM_NCUAHDRAWFRAME 0xAF
  752. #endif // __EXT_MFC_DEF_H