我正在使用Windows GUI Application.Windows上有20个按钮。针对每个按钮点击,我想打开一个新窗口来显示一些信息。它可以是任何可以显示某些信息的东西,但由于我对这一切都是新手并且我不想尝试任何复杂的事情,所以我决定采用针对每个按钮点击创建弹出窗口的想法。
现在我面临的问题是,由于有20个不同的窗口,我是否需要创建20个不同的窗口回调函数?虽然弹出窗口中只有一个控件,即一个关闭符号,但即便如此,我还需要一个CALLBACK功能。
我一直在尝试这个,但现在这个想法看起来毫无意义。是否还有其他选项可以实现所需的功能?
等待帮助。
答案 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
函数!无需窗口程序或课程注册。