#include <windows.h>
#define BUTTON 100
#define EDIT 101
/* Функция обработки сообщений */
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch(message)
{
case WM_COMMAND: if(LOWORD(wParam) == BUTTON) MessageBox(hWnd, "Вы кликнули!", "Событие", 0); break;
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
/* функция регистрации класса окон */
ATOM RegMyWindowClass(HINSTANCE hInst, LPCTSTR lpzClassName) {
WNDCLASS wc = {0};
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.hInstance = hInst;
wc.lpszClassName = lpzClassName;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOWFRAME;
wc.hIcon = LoadImage(NULL, "img.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
return RegisterClass(&wc);
}
/* Функция вхождений программы WinMain */
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
FreeConsole();
LPCTSTR lpzClass = "Window";
if(!RegMyWindowClass(hInstance, lpzClass)) return 1;
/* Вычисление координат центра экрана */
RECT screen;
GetWindowRect(GetDesktopWindow(), &screen);
int width = 500;
int height = 300;
int x = (screen.right - width)/2;
int y = (screen.bottom - height)/2;
/* Создание окна */
HWND hWnd = CreateWindow(
lpzClass,
"Main",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
x, y,
width, height,
NULL,
NULL,
hInstance,
NULL
);
/* Создание кнопки */
HWND OK = CreateWindow(
"BUTTON",
"OK",
WS_CHILD | WS_VISIBLE,
212, 200,
75, 23,
hWnd,
(HMENU)BUTTON,
hInstance,
NULL
);
/* Создание текстового поля */
HWND Edit = CreateWindowEx(
WS_EX_CLIENTEDGE,
"edit",
"",
WS_CHILD | WS_VISIBLE,
10, 10,
246, 23,
hWnd,
(HMENU)EDIT,
hInstance,
NULL
);
MSG msg = {0};
int state = 0;
while((state = GetMessage(&msg, NULL, 0, 0 )) != 0)
DispatchMessage(&msg);
}
I2luY2x1ZGUgPHdpbmRvd3MuaD4KI2RlZmluZSBCVVRUT04gMTAwCiNkZWZpbmUgRURJVCAxMDEKCi8qINCk0YPQvdC60YbQuNGPINC+0LHRgNCw0LHQvtGC0LrQuCDRgdC+0L7QsdGJ0LXQvdC40LkgKi8KTFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKSB7Cglzd2l0Y2gobWVzc2FnZSkKCXsKCQljYXNlIFdNX0NPTU1BTkQ6IGlmKExPV09SRCh3UGFyYW0pID09IEJVVFRPTikgTWVzc2FnZUJveChoV25kLCAi0JLRiyDQutC70LjQutC90YPQu9C4ISIsICLQodC+0LHRi9GC0LjQtSIsIDApOyBicmVhazsKCQljYXNlIFdNX0RFU1RST1k6IFBvc3RRdWl0TWVzc2FnZSgwKTsgYnJlYWs7CgkJZGVmYXVsdDogcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwoJfQoJcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwp9CgovKiDRhNGD0L3QutGG0LjRjyDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INC60LvQsNGB0YHQsCDQvtC60L7QvSAqLwpBVE9NIFJlZ015V2luZG93Q2xhc3MoSElOU1RBTkNFIGhJbnN0LCBMUENUU1RSIGxwekNsYXNzTmFtZSkgewoJV05EQ0xBU1Mgd2MgPSB7MH07Cgl3Yy5scGZuV25kUHJvYyA9IChXTkRQUk9DKVduZFByb2M7Cgl3Yy5zdHlsZSA9IENTX0hSRURSQVd8Q1NfVlJFRFJBVzsKCXdjLmhJbnN0YW5jZSA9IGhJbnN0OwoJd2MubHBzekNsYXNzTmFtZSA9IGxwekNsYXNzTmFtZTsKCXdjLmhDdXJzb3IgPSBMb2FkQ3Vyc29yKE5VTEwsIElEQ19BUlJPVyk7Cgl3Yy5oYnJCYWNrZ3JvdW5kID0gKEhCUlVTSClDT0xPUl9XSU5ET1dGUkFNRTsKCXdjLmhJY29uID0gTG9hZEltYWdlKE5VTEwsICJpbWcuaWNvIiwgSU1BR0VfSUNPTiwgMzIsIDMyLCBMUl9MT0FERlJPTUZJTEUpOwoJcmV0dXJuIFJlZ2lzdGVyQ2xhc3MoJndjKTsKfQoKLyog0KTRg9C90LrRhtC40Y8g0LLRhdC+0LbQtNC10L3QuNC5INC/0YDQvtCz0YDQsNC80LzRiyBXaW5NYWluICovCmludCBBUElFTlRSWSBXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuY2UsIEhJTlNUQU5DRSBoUHJldkluc3RhbmNlLCBMUFNUUiBscENtZExpbmUsIGludCBuQ21kU2hvdykgewoJRnJlZUNvbnNvbGUoKTsKCUxQQ1RTVFIgbHB6Q2xhc3MgPSAiV2luZG93IjsKCWlmKCFSZWdNeVdpbmRvd0NsYXNzKGhJbnN0YW5jZSwgbHB6Q2xhc3MpKSByZXR1cm4gMTsKCQoJLyog0JLRi9GH0LjRgdC70LXQvdC40LUg0LrQvtC+0YDQtNC40L3QsNGCINGG0LXQvdGC0YDQsCDRjdC60YDQsNC90LAgKi8KCVJFQ1Qgc2NyZWVuOwoJR2V0V2luZG93UmVjdChHZXREZXNrdG9wV2luZG93KCksICZzY3JlZW4pOwoJaW50IHdpZHRoID0gNTAwOwoJaW50IGhlaWdodCA9IDMwMDsKCWludCB4ID0gKHNjcmVlbi5yaWdodCAtIHdpZHRoKS8yOwoJaW50IHkgPSAoc2NyZWVuLmJvdHRvbSAtIGhlaWdodCkvMjsKCgkvKiDQodC+0LfQtNCw0L3QuNC1INC+0LrQvdCwICovCglIV05EIGhXbmQgPSBDcmVhdGVXaW5kb3coCgkJbHB6Q2xhc3MsCgkJIk1haW4iLAoJCVdTX09WRVJMQVBQRURXSU5ET1cgfCBXU19WSVNJQkxFLAoJCXgsIHksCgkJd2lkdGgsIGhlaWdodCwKCQlOVUxMLAoJCU5VTEwsCgkJaEluc3RhbmNlLAoJCU5VTEwKCSk7CgoJLyog0KHQvtC30LTQsNC90LjQtSDQutC90L7Qv9C60LggKi8KCUhXTkQgT0sgPSBDcmVhdGVXaW5kb3coCgkJIkJVVFRPTiIsCgkJIk9LIiwKCQlXU19DSElMRCB8IFdTX1ZJU0lCTEUsCgkJMjEyLCAyMDAsCgkJNzUsIDIzLAoJCWhXbmQsCgkJKEhNRU5VKUJVVFRPTiwKCQloSW5zdGFuY2UsCgkJTlVMTAoJKTsKCQoJLyog0KHQvtC30LTQsNC90LjQtSDRgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0LvRjyAqLwoJSFdORCBFZGl0ID0gQ3JlYXRlV2luZG93RXgoCgkJV1NfRVhfQ0xJRU5URURHRSwKCQkiZWRpdCIsCgkJIiIsCgkJV1NfQ0hJTEQgfCBXU19WSVNJQkxFLAogICAgICAgIDEwLCAxMCwKCQkyNDYsIDIzLAoJCWhXbmQsCgkJKEhNRU5VKUVESVQsCgkJaEluc3RhbmNlLAoJCU5VTEwKCSk7CgkKCU1TRyBtc2cgPSB7MH07CglpbnQgc3RhdGUgPSAwOwoJd2hpbGUoKHN0YXRlID0gR2V0TWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwICkpICE9IDApICAgCgkJRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOwp9