Многооконная программа на C ++ — кнопка Создать во втором окне

Поэтому я нашел несколько уроков / уроков по multi-winodw, но ни один из них, похоже, не затрагивает мою проблему.

Я пытаюсь создать кнопку во втором окне, а не в другом.

Вот мой код (исключая ненужные вещи)

HWND hWindow1;
HWND hWindow2;
HINSTANCE hInstGlobal;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
...WindowClass / RegisterClass...

//HWND hWindow1;
hWindow1 = CreateWindow("WinProg", "Window_1", WS_OVERLAPPEDWINDOW,
0, 0, 800, 600, NULL, NULL, hInstance, NULL);

//HWND hWindow2;
hWindow2 = CreateWindow("WinProg", "Window_2", WS_OVERLAPPEDWINDOW,
150, 50, 800, 600, NULL, NULL, hInstance, NULL);

...show/update windows...

...MessageLoop...
}

LRESULT WINAPI WinProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
switch(uiMessage)
{
case WM_CREATE:
{
HWND hButton;
hButton = CreateWindow("BUTTON", "PUSH ME NOW",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
50, 200, 150, 20,
hWindow2, (HMENU) 1,
hInstGlobal, NULL);
}

Кнопки с использованием этого кода не создаются.

Что касается моей отладки, я могу создать кнопку в первом окне, изменив hWindow2 под WM_CREATE на hWindow1. Но это не то, что я хочу. Однако я могу создать кнопку во втором окне, оставив ее как hWindow2, но изменив событие сообщения на WM_PAINT …

Я не понимаю, что происходит, и я предпочел бы не соглашаться на работу вокруг.

Любая помощь приветствуется. Благодарю.

1

Решение

Разве это не очевидный способ создать кнопку на hWindow2?

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
...WindowClass / RegisterClass...

//HWND hWindow1;
hWindow1 = CreateWindow("WinProg", "Window_1", WS_OVERLAPPEDWINDOW,
0, 0, 800, 600, NULL, NULL, hInstance, NULL);

//HWND hWindow2;
hWindow2 = CreateWindow("WinProg", "Window_2", WS_OVERLAPPEDWINDOW,
150, 50, 800, 600, NULL, NULL, hInstance, NULL);

HWND hButton = CreateWindow("BUTTON", "PUSH ME NOW",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
50, 200, 150, 20,
hWindow2, (HMENU) 1,
hInstGlobal, NULL);

...show/update windows...

...MessageLoop...
}

LRESULT WINAPI WinProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
switch(uiMessage)
{
...
}
}

На самом деле не уверен, почему вы пытаетесь создать кнопку в коде, который используется обоими hWindow1 а также hWindow2, Уменьшает потребность в глобальных переменных тоже.

0

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

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

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