WinAPI создать окно + дочерние окна, обработать нажатие кнопки?

Я новичок в WinApi и я хочу создать простое окно внутри моей программы, содержащее пробел родительское окно и две меньшие дочерние кнопки «Button1» & «Button2». с помощью этой кнопки я надеюсь изменить значение bool с false на true и наоборот, но почти все примеры, которые я видел, довольно сложны для понимания, кажется, что вы должны вернуть MSG значение какого-то вида, который я не знаю, как обрабатывать.

у меня есть псевдокод ниже того, что я пытаюсь сделать, я оставил комментарии, объясняющие, что я хочу делать в каждый момент, правильно ли я поступаю ?:

#include <windows.h>

static int buildwindow(){

MSG msg;

//create parent window
HWND hWnd = CreateWindow(TEXT("scrollbar"), TEXT("Parent"), WS_VISIBLE | WS_POPUP,
10, 10, 800, 500, NULL, NULL, NULL,  NULL);

//create child window
HWND hWnd1 = CreateWindow(TEXT("button"), TEXT("button1"), WS_CHILD|WS_VISIBLE | WS_POPUP,
10, 10, 80, 25, hWnd, NULL, NULL,  NULL);

//create child window2
HWND hWnd2 = CreateWindow(TEXT("button"), TEXT("button2"), WS_CHILD|WS_VISIBLE | WS_POPUP,
100, 100, 80, 25, hWnd, NULL, NULL,  NULL);

ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
ShowWindow(hWnd1, SW_SHOW);
UpdateWindow(hWnd1);
ShowWindow(hWnd2, SW_SHOW);
UpdateWindow(hWnd2);

//wait for buttonpress
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

//return the buttonpress
return (int) msg.wParam;
}int main(void)
{

//create window inside the buttonpress method
int buttonpress = buildwindow();

//check which button was pressed
if(buttonpress = button1){
//do something
}
elseif(buttonpress = button2){
//do something else
}
//finish
return(0);

}

-2

Решение

Цикл сообщений (GetMessage) не закончится, пока не поступит сообщение WM_QUIT.

Вам нужно реализовать функции обратного вызова для событий нажатия кнопки.

Я предлагаю прочитать больше о сообщениях кнопки здесь:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb775941(v=vs.85).aspx

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]