针对按钮上的每次单击创建单独的窗口

时间:2013-07-11 07:36:38

标签: windows visual-studio-2010 winapi button window

我正在使用Windows GUI Application.Windows上有20个按钮。针对每个按钮点击,我想打开一个新窗口来显示一些信息。它可以是任何可以显示某些信息的东西,但由于我对这一切都是新手并且我不想尝试任何复杂的事情,所以我决定采用针对每个按钮点击创建弹出窗口的想法。

现在我面临的问题是,由于有20个不同的窗口,我是否需要创建20个不同的窗口回调函数?虽然弹出窗口中只有一个控件,即一个关闭符号,但即便如此,我还需要一个CALLBACK功能。

我一直在尝试这个,但现在这个想法看起来毫无意义。是否还有其他选项可以实现所需的功能?

等待帮助。

1 个答案:

答案 0 :(得分:3)

如果所有窗口的行为方式相同,那么您可以创建一个由所有弹出窗口共享的window procedure(您称之为CALLBACK函数)

窗口过程不必对于单个窗口是唯一的,但如果多个窗口共享相同的窗口过程,它们将以相同的方式对它们收到的所有消息做出反应。

例如:

// Message procedure for all pop-up windows.
LRESULT CALLBACK MyPopupWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ 
    switch (msg)
    { 
        // handle any messages you want here in order to
        //   customize the behavior of your pop-up window
    } 
    return DefWindowProc(hwnd, msg, wParam, lParam);
}

当您为弹出窗口注册窗口类(使用MyPopupWndProc函数)时,指定指向RegisterClassEx函数的指针,然后在传递已注册窗口类的名称时只要点击主窗口上的某个按钮,就可以调用CreateWindowEx来创建/显示弹出窗口。

当然,如果您只是想要一些简单的测试用途,请记住您始终可以调用MessageBox函数!无需窗口程序或课程注册。