Это - учебник, который я настоятельно рекомендую по функциям интерфейса пользователя Win32 API. Это отлично Грубо говоря, в вашей функции обратного вызова (LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
у вас есть несколько опций, которые вы можете поймать:
switch(msg)
{
case WM_CREATE:
break;
case WM_COMMAND:
break;
/* .. */
}
То, что вам нужно сделать на WM_CREATE
, выглядит примерно так:
HWND hWnd_button = CreateWindow(TEXT("button"), TEXT("Quit"),
WS_VISIBLE | WS_CHILD ,
20, 50, 80, 25,
hwnd, (HMENU) 1, NULL, NULL);
Причина, по которой я сохранил HWND
этой кнопки, заключается в том, что если вы хотите изменить кнопку позднее, вам понадобится этот дескриптор в качестве аргумента для SendMessage()
. Теперь, следующий, ловить щелчок. Когда кнопка нажата, она отправляет WM_COMMAND
в родительское окно с приведенным аргументом HMENU
(в данном случае 1) в wParam
. Это работает для каждого создаваемого вами элемента управления (меню, флажки и т. Д. - если они публикуют более сложные параметры, они могут присутствовать в lParam
). Итак:
case WM_COMMAND:
if (LOWORD(wParam) == 1) {
DestroyWindow();
/* or SendMessage(hwnd, WM_CLOSE,0,0); see commments */
}
break;
Ловит эту конкретную опцию. Внутри if
обрабатывает это событие кнопки.