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

时间:2013-05-07 05:22:13

标签: c++ windows winapi multi-window

所以我找到了一些多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);
        } 

使用此代码不会创建任何按钮。

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

我不明白发生了什么,我宁愿不解决这个问题。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

这不是在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使用的代码中创建按钮。减少对全局变量的需求。