Iconizer APP.cpp
上传用户:songshun
上传日期:2007-01-04
资源大小:51k
文件大小:5k
源码类别:

按钮控件

开发平台:

Visual C++

  1. //===========================================================================
  2. //
  3. // HomeWork from Belgium Not licensed software  
  4. // 1999 - 2000 No rights reserved
  5. //
  6. //===========================================================================
  7. //
  8. // Project/Product : Iconizer APP
  9. //  FileName : Iconizer APPDlg.cpp
  10. // Author(s) : Bart Gysens
  11. //
  12. // Description : Implementation of the Iconizer APP
  13. //
  14. // Classes : CIconizerAPPApp
  15. // CIconizerAppDlg
  16. // CAboutBox
  17. //
  18. // Information :
  19. //   Compiler(s) : Visual C++ 6.0
  20. //   Target(s) : Windows 95/98 and Windows NT (x86)
  21. //   Editor : Visual C++ 6.0 internal editor
  22. //
  23. // History
  24. // Vers.  Date      Aut.  Type     Description
  25. //  -----  --------  ----  -------  -----------------------------------------
  26. // 1.00   22 05 99  BG    Create   Original
  27. //
  28. //===========================================================================
  29. #include "stdafx.h"
  30. #include "Iconizer DLL.h"
  31. #include "Iconizer APP.h"
  32. //===========================================================================
  33. // Macros and typedefs
  34. //===========================================================================
  35. #ifdef _DEBUG
  36. #define new DEBUG_NEW
  37. #undef THIS_FILE
  38. static char THIS_FILE[] = __FILE__;
  39. #endif
  40. //===========================================================================
  41. // 
  42. // Class : CIconizerAPPApp
  43. // Author(s) : Bart Gysens
  44. //
  45. // Description : Implementation of the CIconizerAPPApp class
  46. //
  47. // Comments : none
  48. //
  49. // History : 1.00  : Create
  50. //
  51. //===========================================================================
  52. BEGIN_MESSAGE_MAP(CIconizerAPPApp, CWinApp)
  53. //{{AFX_MSG_MAP(CIconizerAPPApp)
  54. //}}AFX_MSG
  55. ON_COMMAND(ID_HELP, CWinApp::OnHelp)
  56. END_MESSAGE_MAP()
  57. CIconizerAPPApp::CIconizerAPPApp()
  58. {
  59. }
  60. BOOL CIconizerAPPApp::InitInstance()
  61. {
  62. AfxEnableControlContainer();
  63. #ifdef _AFXDLL
  64. Enable3dControls();
  65. #else
  66. Enable3dControlsStatic();
  67. #endif
  68. CIconizerAPPDlg dlg;
  69. m_pMainWnd = &dlg;
  70. int nResponse = dlg.DoModal();
  71. if (nResponse == IDOK)
  72. {
  73. }
  74. else if (nResponse == IDCANCEL)
  75. {
  76. }
  77. return FALSE;
  78. }
  79. ///////////////////////////
  80. // Create the app object //
  81. ///////////////////////////
  82. CIconizerAPPApp theApp;
  83. //===========================================================================
  84. // 
  85. // Class : CIconizerAPPDlg
  86. // Author(s) : Bart Gysens
  87. //
  88. // Description : Implementation of the CIconizerAPPDlg class
  89. //
  90. // Comments : none
  91. //
  92. // History : 1.00  : Create
  93. //
  94. //===========================================================================
  95. BEGIN_MESSAGE_MAP(CIconizerAPPDlg, CDialog)
  96. //{{AFX_MSG_MAP(CIconizerAPPDlg)
  97. ON_WM_SYSCOMMAND()
  98. ON_WM_PAINT()
  99. ON_WM_QUERYDRAGICON()
  100. ON_BN_CLICKED(IDC_HOOK, OnHook)
  101. ON_BN_CLICKED(IDC_UNHOOK, OnUnhook)
  102. //}}AFX_MSG_MAP
  103. END_MESSAGE_MAP()
  104. CIconizerAPPDlg::CIconizerAPPDlg(CWnd* pParent )
  105. :CDialog(CIconizerAPPDlg::IDD, pParent)
  106. {
  107. //{{AFX_DATA_INIT(CIconizerAPPDlg)
  108. //}}AFX_DATA_INIT
  109. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  110. }
  111. void CIconizerAPPDlg::DoDataExchange(CDataExchange* pDX)
  112. {
  113. CDialog::DoDataExchange(pDX);
  114. //{{AFX_DATA_MAP(CIconizerAPPDlg)
  115. //}}AFX_DATA_MAP
  116. }
  117. BOOL CIconizerAPPDlg::OnInitDialog()
  118. {
  119. CDialog::OnInitDialog();
  120. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  121. ASSERT(IDM_ABOUTBOX < 0xF000);
  122. CMenu* pSysMenu = GetSystemMenu(FALSE);
  123. if (pSysMenu != NULL)
  124. {
  125. CString strAboutMenu;
  126. strAboutMenu.LoadString(IDS_ABOUTBOX);
  127. if (!strAboutMenu.IsEmpty())
  128. {
  129. pSysMenu->AppendMenu(MF_SEPARATOR);
  130. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  131. }
  132. }
  133. SetIcon(m_hIcon, TRUE);
  134. SetIcon(m_hIcon, FALSE);
  135. return TRUE;
  136. }
  137. void CIconizerAPPDlg::OnSysCommand(UINT nID, LPARAM lParam)
  138. {
  139. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  140. {
  141. CAboutDlg dlgAbout;
  142. dlgAbout.DoModal();
  143. }
  144. else
  145. {
  146. CDialog::OnSysCommand(nID, lParam);
  147. }
  148. }
  149. void CIconizerAPPDlg::OnPaint() 
  150. {
  151. if (IsIconic())
  152. {
  153. CPaintDC dc(this);
  154. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  155. int cxIcon = GetSystemMetrics(SM_CXICON);
  156. int cyIcon = GetSystemMetrics(SM_CYICON);
  157. CRect rect;
  158. GetClientRect(&rect);
  159. int x = (rect.Width() - cxIcon + 1) / 2;
  160. int y = (rect.Height() - cyIcon + 1) / 2;
  161. dc.DrawIcon(x, y, m_hIcon);
  162. }
  163. else
  164. {
  165. CDialog::OnPaint();
  166. }
  167. }
  168. HCURSOR CIconizerAPPDlg::OnQueryDragIcon()
  169. {
  170. return (HCURSOR) m_hIcon;
  171. }
  172. void CIconizerAPPDlg::OnHook() 
  173. {
  174. if ( StartHook() )
  175. {
  176. GetDlgItem( IDC_HOOK )->EnableWindow( false );
  177. GetDlgItem( IDC_UNHOOK )->EnableWindow( true );
  178. }
  179. }
  180. void CIconizerAPPDlg::OnUnhook() 
  181. {
  182. if ( StopHook() )
  183. {
  184. GetDlgItem( IDC_UNHOOK )->EnableWindow( false );
  185. GetDlgItem( IDC_HOOK )->EnableWindow( true );
  186. }
  187. }
  188. //===========================================================================
  189. // 
  190. // Class : CAboutDlg
  191. // Author(s) : Bart Gysens
  192. //
  193. // Description : Implementation of the CIconizerAPPDlg class
  194. //
  195. // Comments : none
  196. //
  197. // History : 1.00  : Create
  198. //
  199. //===========================================================================
  200. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  201. //{{AFX_MSG_MAP(CAboutDlg)
  202. //}}AFX_MSG_MAP
  203. END_MESSAGE_MAP()
  204. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  205. {
  206. //{{AFX_DATA_INIT(CAboutDlg)
  207. //}}AFX_DATA_INIT
  208. }
  209. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  210. {
  211. CDialog::DoDataExchange(pDX);
  212. //{{AFX_DATA_MAP(CAboutDlg)
  213. //}}AFX_DATA_MAP
  214. }