多窗口程序-在第二个窗口上创建按钮

C++ multi window program - Create button on second window

本文关键字:窗口 创建 按钮 第二个 程序      更新时间:2023-10-16

所以我找到了一些多窗口教程/课程,但似乎没有一个触及我的问题。

我想在第二个窗口上创建一个按钮,而不是另一个。

这是我的代码(不包括不必要的东西)

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);
        } 

此代码不能创建任何按钮。

对于我的调试,我可以通过将WM_CREATE下的hWindow2更改为hWindow1来在第一个窗口上创建一个按钮。但那不是我想要的。然而,我可以通过将其保留为hWindow2来创建第二个窗口上的按钮,但将消息事件更改为WM_PAINT…

我不明白这是怎么回事,我宁愿不解决这个问题。

任何帮助都将非常感激。谢谢。

这不是在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)
    {
        ...
    }
}

真的不知道为什么你试图创建的代码是由hWindow1hWindow2正在使用的按钮。