如何在从主窗口事件处理程序调用后在子窗口中创建按钮

How to create a button in a child window after calling from main window event handler?

本文关键字:窗口 创建 按钮 调用 事件处理 程序      更新时间:2023-10-16

我有一个主窗口程序,它在按下O.K后调用子窗口,如下面的代码片段所示。我的问题是如何在这个子窗口中插入一个按钮并编辑字段以将其检索回来?据我所知,对于主窗口,这是通过WinProc完成的。有没有更好的方法可以通过儿童窗口进行操作?

case IDOK:
            HINSTANCE hinst;
            HWND hWindow;
            hinst = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);
            hWindow = CreateWindow
                (
                g_szClassName,
                TEXT("Configure Maze Properties"),
                WS_OVERLAPPEDWINDOW,
                200, 100, 300, 228,
                hwnd,
                0,
                hinst,
                0
                );

您有两种主要的可能性:

  • 从您所在的位置开始填充新窗口。只需在CreateWindowEx()中传递hWindow作为父窗口,而不是当前的hwnd

  • 按照本教程中的说明,通过对WM_CREATE作出反应,从其自己的winproc消息处理程序中开始填充新窗口。但是,这需要将g_szClassName注册为子窗口的一个单独类,并具有自己的回调函数。

顺便说一下,本教程向您展示了如何创建按钮和文本框。

第二种选择需要更多的工作,但使子窗口更加自包含,从而实现更干净的代码和更好的可重用性。