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

界面编程

开发平台:

Visual C++

  1. // ResizablePropertySheet.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "ResizablePropertySheet.h"
  5. #include "MyResizablePage1.h"
  6. #include "MyResizablePage2.h"
  7. #include "MyResizablePage3.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMyResizablePropertySheet
  15. class CMyResizablePropertySheet : public CExtNCW < CExtResizablePropertySheet >
  16. {
  17. public:
  18. CMyResizablePropertySheet(
  19. UINT nIDCaption,
  20. CWnd *pParentWnd = NULL,
  21. UINT iSelectPage = 0
  22. )
  23. : CExtNCW < CExtResizablePropertySheet > (
  24. nIDCaption,
  25. pParentWnd,
  26. iSelectPage
  27. )
  28. {
  29. }
  30. CMyResizablePropertySheet(
  31. LPCTSTR pszCaption,
  32. CWnd *pParentWnd = NULL,
  33. UINT iSelectPage = 0
  34. )
  35. : CExtNCW < CExtResizablePropertySheet > (
  36. pszCaption,
  37. pParentWnd,
  38. iSelectPage
  39. )
  40. {
  41. }
  42. virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  43. {
  44. /*
  45. #if _MFC_VER >= 0x700
  46. if( (m_psh.dwFlags&PSH_WIZARD97) != 0 )
  47. {
  48. if( message == WM_PAINT || message == WM_ERASEBKGND )
  49. {
  50. LRESULT lResult = CPropertySheet::WindowProc(message,wParam,lParam);
  51. if( message == WM_PAINT
  52. && m_bShowResizingGripper
  53. && (!IsZoomed())
  54. )
  55. {
  56. CClientDC dc( this );
  57. CFont * pOldFont =
  58. dc.SelectObject(
  59. &g_PaintManager->m_FontMarlett
  60. );
  61. ASSERT( pOldFont != NULL );
  62. COLORREF clrOld = dc.SetTextColor(
  63. g_PaintManager->GetColor(
  64. CExtPaintManager::CLR_TEXT_OUT,
  65. this
  66. )
  67. );
  68. INT nOldBkMode = dc.SetBkMode(TRANSPARENT);
  69. dc.DrawText(
  70. _T("o"),
  71. 1,
  72. m_rcResizingGripper,
  73. DT_SINGLELINE|DT_RIGHT|DT_BOTTOM
  74. );
  75. dc.SetBkMode(nOldBkMode);
  76. dc.SetTextColor(clrOld);
  77. dc.SelectObject(pOldFont);
  78. }
  79. return lResult;
  80. }
  81. }
  82. #endif // #if _MFC_VER >= 0x700
  83. */
  84. if( message == WM_COMMAND )
  85. {
  86. if( wParam == ID_APPLY_NOW )
  87. {
  88. ::AfxMessageBox( _T("ID_APPLY_NOW command button clicked.") );
  89. return 0;
  90. } // if( wParam == ID_APPLY_NOW )
  91. else if( wParam == ID_WIZFINISH )
  92. {
  93. ::AfxMessageBox( _T("ID_WIZFINISH command button clicked.") );
  94. return 0;
  95. } // else if( wParam == ID_WIZFINISH )
  96. } // if( message == WM_COMMAND )
  97. LRESULT lResult = CExtNCW < CExtResizablePropertySheet > :: WindowProc(message,wParam,lParam);
  98. if( message == WM_INITDIALOG )
  99. {
  100. if( ! IsWizard() )
  101. {
  102.  // enable apply button in non-wizard mode
  103. // (it is treared as PSWIZB_FINISH flag)
  104. SetWizardButtons( PSWIZB_BACK|PSWIZB_NEXT|PSWIZB_FINISH );
  105. } // if( ! IsWizard() )
  106. HWND hWnd;
  107. hWnd = ::GetDlgItem( m_hWnd, ID_APPLY_NOW );
  108. if( hWnd != NULL )
  109. ::EnableWindow( hWnd, TRUE );
  110. hWnd = ::GetDlgItem( m_hWnd, ID_WIZFINISH );
  111. if( hWnd != NULL )
  112. ::EnableWindow( hWnd, TRUE );
  113. } // if( message == WM_INITDIALOG )
  114. return lResult;
  115. }
  116. }; // class CMyResizablePropertySheet
  117. /////////////////////////////////////////////////////////////////////////////
  118. // CMyApp
  119. BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
  120. //{{AFX_MSG_MAP(CMyApp)
  121. // NOTE - the ClassWizard will add and remove mapping macros here.
  122. //    DO NOT EDIT what you see in these blocks of generated code!
  123. //}}AFX_MSG
  124. ON_COMMAND(ID_HELP, CWinApp::OnHelp)
  125. END_MESSAGE_MAP()
  126. /////////////////////////////////////////////////////////////////////////////
  127. // CMyApp construction
  128. CMyApp::CMyApp()
  129. {
  130. // TODO: add construction code here,
  131. // Place all significant initialization in InitInstance
  132. }
  133. /////////////////////////////////////////////////////////////////////////////
  134. // The one and only CMyApp object
  135. CMyApp theApp;
  136. /////////////////////////////////////////////////////////////////////////////
  137. // CMyApp initialization
  138. BOOL CMyApp::InitInstance()
  139. {
  140. InitCommonControls();
  141. AfxEnableControlContainer();
  142. SetRegistryKey(
  143. _T("Foss") // your company name
  144. );
  145. // comment/uncomment one of these lines to set different style
  146. g_PaintManager.InstallPaintManager( RUNTIME_CLASS( CExtPaintManagerOffice2007_R1 ) );
  147. CMyResizablePropertySheet
  148. _PropSheet(
  149. AFX_IDS_APP_TITLE // your software name
  150. );
  151. // add pages
  152. CMyResizablePage1 _page1;
  153. _PropSheet.AddPage( &_page1 );
  154. CMyResizablePage2 _page2;
  155. _PropSheet.AddPage( &_page2 );
  156. CMyResizablePage3 _page3;
  157. _PropSheet.AddPage( &_page3 );
  158. // enable persistent window position
  159. _PropSheet.EnableSaveRestore(
  160. _T( "Dialog Settings" ),
  161. _T( "Main Property Sheet" )
  162. );
  163. // comment this line and next lines to set simple tabbed mode (non-wizard)
  164. _PropSheet.SetWizardMode();
  165. #if _MFC_VER >= 0x700
  166. // these lines are fully available with MFC 7.0 or later only
  167. // comment them to set old classic wizard mode
  168. // leave them intact to use wizard 97 mode
  169. _PropSheet.m_psh.dwSize = sizeof(_PropSheet.m_psh);
  170. _PropSheet.m_psh.dwFlags |=
  171. PSH_WIZARD97
  172. |PSH_WATERMARK // comment this line to remove the tiled watermark bitmap
  173. |PSH_WIZARDHASFINISH;
  174. // comment the following line if the tiled watermark bitmap is not needed
  175. _PropSheet.m_psh.pszbmWatermark = MAKEINTRESOURCE(IDB_BITMAP_WATERMARK);
  176. _PropSheet.m_psh.hInstance = ::AfxGetInstanceHandle();
  177. _page1.m_psp.dwFlags |=
  178. PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
  179. _page1.m_psp.pszHeaderTitle = _T("Title of page 1");
  180. _page1.m_psp.pszHeaderSubTitle = _T("Subtitle of page 1");
  181. _page2.m_psp.dwFlags |=
  182. PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
  183. _page2.m_psp.pszHeaderTitle = _T("Title of page 2");
  184. _page2.m_psp.pszHeaderSubTitle = _T("Subtitle of page 2");
  185. _page3.m_psp.dwFlags |=
  186. PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
  187. _page3.m_psp.pszHeaderTitle = _T("Title of page 3");
  188. _page3.m_psp.pszHeaderSubTitle = _T("Subtitle of page 3");
  189. #endif // #if _MFC_VER >= 0x700
  190. // run it
  191. if( _PropSheet.DoModal() == IDOK )
  192. {
  193. //::AfxMessageBox( _T("<OK> pressed") );
  194. }
  195. else
  196. {
  197. //::AfxMessageBox( _T("<Cancel> pressed") );
  198. }
  199. // Since the dialog has been closed, return FALSE so that we exit the
  200. //  application, rather than start the application's message pump.
  201. return FALSE;
  202. }