Advertisement
Uncleeee

Untitled

Nov 5th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #pragma comment(lib,"user32.lib");
  4. #pragma comment(lib,"gdi32.lib");
  5.  
  6. LRESULT CALLBACK MyWndProc(HWND, UINT, WPARAM, LPARAM);
  7. HDC hdc;
  8. RECT rt;
  9. COPYDATASTRUCT data;
  10.  
  11.  
  12.  
  13.  
  14. int WINAPI WinMain(HINSTANCE hInstance,
  15. HINSTANCE hPrevInstance,
  16. LPSTR lpCmdLine,
  17. int nCmdShow){
  18. HWND hWnd;
  19. MSG msg;
  20. WNDCLASS wc;
  21. LPCSTR lpszAppName="CTemplate2";
  22. BOOL ret;
  23. wc.lpszClassName = lpszAppName; //Имя класса окна
  24. wc.hInstance=hInstance; //дескриптор экземпляра приложения
  25. wc.lpfnWndProc = (WNDPROC)MyWndProc;//указатель
  26. wc.hCursor = LoadCursor(NULL, IDC_ARROW); //вид курсора над
  27. wc.hIcon = 0;
  28. //LoadIcon(hInstance,(LPCTSTR)IDI_CTEMPLATE); //идентификатор
  29. //пиктограммы
  30. wc.lpszMenuName = 0; //идентификатор ресурса меню
  31. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //цвет
  32. //закраски окна
  33. wc.style = CS_HREDRAW | CS_VREDRAW; //стиль окна
  34. wc.cbClsExtra = 0; //рудимент, инициализируется нулём
  35. wc.cbWndExtra = 0; //рудимент, инициализируется нулём
  36. if(!RegisterClass(&wc)) //Регистрация класса окна
  37. return 0;
  38. hWnd = CreateWindow( lpszAppName, //Имя класса окна
  39. lpszAppName, //Имя окна
  40. WS_OVERLAPPEDWINDOW, //Стиль
  41. //окна (перекрывающееся окно)
  42. 100, //CW_USEDEFAULT,
  43. //x-коорд. верхнего-левого угла
  44. 100, //y-коорд. верхнего-левого угла
  45. 400, //CW_USEDEFAULT, ширина
  46. 200, //высота
  47. NULL, //дескриптор родительского окна
  48. NULL, //дескриптор меню
  49. hInstance, //дескриптор экземпляра приложения
  50. NULL); //указатель на структуру, содержащую
  51. ret=RegisterHotKey(hWnd,0xB001, MOD_CONTROL | MOD_ALT, 'W');
  52. ShowWindow(hWnd, SW_SHOW); //SW_SHOW...
  53. //способ представления окна
  54. UpdateWindow(hWnd); //прорисовывает клиентскую область окна,
  55. //генерирует сообщение WM_PAINT
  56. while (GetMessage(&msg, NULL, 0, 0)) {//Извлечение сообщения
  57. //из очереди
  58. //сообщений
  59. TranslateMessage(&msg); //трансляция сообщений
  60. //виртуальных ключей WM_KEYDOWN,
  61. //WM_KEYDOWN, WM_KEYUP и т.п.
  62. //в сообщение символа WM_CHAR
  63. DispatchMessage(&msg); //направляет сообщения оконной процедуре
  64. }
  65.  
  66. return msg.wParam;
  67. }
  68.  
  69.  
  70.  
  71.  
  72.  
  73. LRESULT CALLBACK MyWndProc(HWND hWnd, UINT message,
  74. WPARAM wParam, LPARAM lParam)
  75. {
  76. HDC hdc;
  77. HINSTANCE hInst;
  78. PAINTSTRUCT ps;
  79. static HWND hBtn; // дескриптор кнопки
  80. static HWND hEdt1;
  81. static HWND hStat;
  82. static HWND hStat2;
  83. static HWND hStat3;
  84. static HWND hStat4;
  85. TCHAR StrA[20];
  86. int Len;
  87.  
  88. switch (message){
  89. case WM_CREATE: // сообщение создания окна
  90. hInst = ((LPCREATESTRUCT)lParam)->hInstance; // дескриптор приложения
  91. // Создаем и показываем первое поле редактирования
  92. hEdt1 = CreateWindow("edit", "0",
  93. WS_CHILD | WS_VISIBLE | WS_BORDER | ES_RIGHT, 50, 50, 60, 20,
  94. hWnd, 0, hInst, NULL);
  95. ShowWindow(hEdt1, SW_SHOWNORMAL);
  96. // Создаем и показываем кнопку
  97. hBtn = CreateWindow("button", "==",
  98. WS_CHILD | WS_VISIBLE | WS_BORDER,
  99. 50, 100, 120, 30, hWnd, 0, hInst, NULL);
  100. ShowWindow(hBtn, SW_SHOWNORMAL);
  101. // Создаем и показываем поле текста для результата
  102. hStat = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
  103. 170, 100, 120, 20, hWnd, 0, hInst, NULL);
  104. ShowWindow(hStat, SW_SHOWNORMAL);
  105. hStat2 = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
  106. 170, 80, 120, 20, hWnd, 0, hInst, NULL);
  107. ShowWindow(hStat, SW_SHOWNORMAL);
  108. hStat3 = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
  109. 170, 60, 120, 20, hWnd, 0, hInst, NULL);
  110. ShowWindow(hStat, SW_SHOWNORMAL);
  111. hStat4 = CreateWindow("static", "", WS_CHILD | WS_VISIBLE,
  112. 170, 40, 120, 20, hWnd, 0, hInst, NULL);
  113. ShowWindow(hStat, SW_SHOWNORMAL);
  114. break;
  115. case WM_COMMAND: // сообщение о команде
  116. if (lParam == (LPARAM)hBtn) // если нажали на кнопку
  117. {
  118. Len = GetWindowText(hEdt1, StrA, 20);
  119. data.cbData=strlen(StrA);
  120. data.lpData=StrA;
  121. HWND hWnd = FindWindow("CTemplate1","CTemplate1");
  122. SendMessage(hWnd, WM_COPYDATA,
  123. (WPARAM)GetFocus(),
  124. (LPARAM)&data);
  125.  
  126. //SetWindowText(hStat, StrA); // выводим результат в статическое поле
  127. }
  128. break;
  129. case WM_DESTROY: //сообщение генерируется при уничтожении окна
  130. PostQuitMessage(0); //указывает системе штатно выполнить
  131. break;
  132. case WM_HOTKEY:
  133. ShowWindow(hWnd,SW_SHOWNORMAL);
  134. break;
  135. case WM_PAINT:
  136. hdc = BeginPaint(hWnd, &ps);
  137. GetClientRect(hWnd, &rt);
  138. DrawText(hdc, "From Paint", strlen("From Paint"), &rt, DT_CENTER);
  139. EndPaint(hWnd, &ps);
  140. break;
  141. case WM_COPYDATA:
  142. GetClientRect(hWnd, &rt);
  143. hdc =GetDC(hWnd);
  144. //DrawText(hdc, (char*)(
  145. //((COPYDATASTRUCT*)lParam)->lpData),
  146. //((COPYDATASTRUCT*)lParam)->cbData, &rt, DT_LEFT);
  147.  
  148. Len = GetWindowText(hStat3, StrA, 20);
  149. SetWindowText(hStat4, StrA);
  150.  
  151. Len = GetWindowText(hStat2, StrA, 20);
  152. SetWindowText(hStat3, StrA);
  153.  
  154. Len = GetWindowText(hStat, StrA, 20);
  155. SetWindowText(hStat2, StrA);
  156.  
  157. SetWindowText(hStat, (char*)(
  158. ((COPYDATASTRUCT*)lParam)->lpData));
  159. ReleaseDC(hWnd,hdc);
  160. break;
  161. default:
  162. return DefWindowProc(hWnd, message, wParam, lParam);
  163. }
  164. return 0;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement