Uncleeee

Untitled

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