1

我正在开发 Windows GUI 应用程序。我的窗口上有 20 个按钮。每次单击按钮时,我都想打开一个新窗口来显示一些信息。它可以是任何可以显示一些信息的东西,但是由于我对这一切都不熟悉,而且我不想尝试任何复杂的东西,所以我决定采用针对每个按钮单击创建一个弹出窗口的想法。

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

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

等待帮助。

4

1 回答 1

3

如果所有窗口的行为方式都相同,那么您可以创建一个由所有弹出窗口共享的窗口过程(您正在调用的函数)。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函数!无需窗口程序或课程注册。

于 2013-07-11T08:26:23.853 回答