Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. // Win32Project1.cpp: определяет точку входа для приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Win32Project1.h"
  6. #include <tchar.h>
  7.  
  8. #define MAX_LOADSTRING 100
  9.  
  10. // Глобальные переменные:
  11. HINSTANCE hInst; // текущий экземпляр
  12. TCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка
  13. TCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна
  14.  
  15. // Отправить объявления функций, включенных в этот модуль кода:
  16. ATOM MyRegisterClass(HINSTANCE hInstance);
  17. BOOL InitInstance(HINSTANCE, int);
  18. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  19. INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
  20.  
  21. int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
  22. _In_opt_ HINSTANCE hPrevInstance,
  23. _In_ LPTSTR lpCmdLine,
  24. _In_ int nCmdShow)
  25. {
  26. UNREFERENCED_PARAMETER(hPrevInstance);
  27. UNREFERENCED_PARAMETER(lpCmdLine);
  28.  
  29. // TODO: разместите код здесь.
  30. MSG msg;
  31. HACCEL hAccelTable;
  32.  
  33. // Инициализация глобальных строк
  34. LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
  35. LoadString(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);
  36. MyRegisterClass(hInstance);
  37.  
  38. // Выполнить инициализацию приложения:
  39. if (!InitInstance (hInstance, nCmdShow))
  40. {
  41. return FALSE;
  42. }
  43.  
  44. hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1));
  45.  
  46. // Цикл основного сообщения:
  47. while (GetMessage(&msg, NULL, 0, 0))
  48. {
  49. if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  50. {
  51. TranslateMessage(&msg);
  52. DispatchMessage(&msg);
  53. }
  54. }
  55.  
  56. return (int) msg.wParam;
  57. }
  58.  
  59.  
  60.  
  61. //
  62. // ФУНКЦИЯ: MyRegisterClass()
  63. //
  64. // НАЗНАЧЕНИЕ: регистрирует класс окна.
  65. //
  66. ATOM MyRegisterClass(HINSTANCE hInstance)
  67. {
  68. WNDCLASSEX wcex;
  69.  
  70. wcex.cbSize = sizeof(WNDCLASSEX);
  71.  
  72. wcex.style = CS_HREDRAW | CS_VREDRAW;
  73. wcex.lpfnWndProc = WndProc;
  74. wcex.cbClsExtra = 0;
  75. wcex.cbWndExtra = 0;
  76. wcex.hInstance = hInstance;
  77. wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1));
  78. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  79. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  80. wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WIN32PROJECT1);
  81. wcex.lpszClassName = szWindowClass;
  82. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  83.  
  84. return RegisterClassEx(&wcex);
  85. }
  86.  
  87. //
  88. // ФУНКЦИЯ: InitInstance(HINSTANCE, int)
  89. //
  90. // НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
  91. //
  92. // КОММЕНТАРИИ:
  93. //
  94. // В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
  95. // создается и выводится на экран главное окно программы.
  96. //
  97. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  98. {
  99. HWND hWnd;
  100.  
  101. hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
  102.  
  103. hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  104. CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
  105.  
  106. if (!hWnd)
  107. {
  108. return FALSE;
  109. }
  110.  
  111. ShowWindow(hWnd, nCmdShow);
  112. UpdateWindow(hWnd);
  113.  
  114. return TRUE;
  115. }
  116.  
  117. //
  118. // ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
  119. //
  120. // НАЗНАЧЕНИЕ: обрабатывает сообщения в главном окне.
  121. //
  122. // WM_COMMAND - обработка меню приложения
  123. // WM_PAINT -Закрасить главное окно
  124. // WM_DESTROY - ввести сообщение о выходе и вернуться.
  125. //
  126. //
  127. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  128. {
  129. int wmId, wmEvent;
  130. PAINTSTRUCT ps;
  131. HDC hdc;
  132. TCHAR greeting[] = _T("Текст!");
  133.  
  134. switch (message)
  135. {
  136. case WM_COMMAND:
  137. wmId = LOWORD(wParam);
  138. wmEvent = HIWORD(wParam);
  139. // Разобрать выбор в меню:
  140. switch (wmId)
  141. {
  142. case IDM_ABOUT:
  143. DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  144. break;
  145. case IDM_EXIT:
  146. DestroyWindow(hWnd);
  147. break;
  148. default:
  149. return DefWindowProc(hWnd, message, wParam, lParam);
  150. }
  151. break;
  152. case WM_PAINT:
  153. hdc = BeginPaint(hWnd, &ps);
  154. // TODO: добавьте любой код отрисовки...
  155. SetBkColor(hdc, RGB(255, 0, 0));
  156. TextOut(hdc, 2, 2, greeting, _tcslen(greeting));
  157. EndPaint(hWnd, &ps);
  158. break;
  159. case WM_DESTROY:
  160. PostQuitMessage(0);
  161. break;
  162. default:
  163. return DefWindowProc(hWnd, message, wParam, lParam);
  164. }
  165. return 0;
  166. }
  167.  
  168. // Обработчик сообщений для окна "О программе".
  169. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  170. {
  171. UNREFERENCED_PARAMETER(lParam);
  172. switch (message)
  173. {
  174. case WM_INITDIALOG:
  175. return (INT_PTR)TRUE;
  176.  
  177. case WM_COMMAND:
  178. if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  179. {
  180. EndDialog(hDlg, LOWORD(wParam));
  181. return (INT_PTR)TRUE;
  182. }
  183. break;
  184. }
  185. return (INT_PTR)FALSE;
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement