Winapi win32通知Abt子控件创建

Winapi win32通知Abt子控件创建,winapi,Winapi,因此,我使用CreateWindowEx()函数在父WM_CREATE message handler部分中创建一个按钮,该按钮的父对象(某些值)具有自己的用户数据,即CreateWindowEx()的最后一个参数是指向某些任意数据的指针 创建根/主窗口时,我们将收到 WM_CREATE或WM_NCCREATE消息,允许我们通过LPARAM值使用CREATESTRUCT访问此日期,并通过SetWindowPtr(用户数据)将其分配给窗口 但是,当创建子控件并将其附加到此父控件时,父窗口过程不会收

因此,我使用CreateWindowEx()函数在父WM_CREATE message handler部分中创建一个按钮,该按钮的父对象(某些值)具有自己的用户数据,即CreateWindowEx()的最后一个参数是指向某些任意数据的指针

创建根/主窗口时,我们将收到 WM_CREATE或WM_NCCREATE消息,允许我们通过LPARAM值使用CREATESTRUCT访问此日期,并通过SetWindowPtr(用户数据)将其分配给窗口

但是,当创建子控件并将其附加到此父控件时,父窗口过程不会收到WM_CREATE消息和此按钮的创建数据 传递到CreateWindowEx()的消息丢失

在父窗口过程中,是否有方法知道何时在此父窗口中成功创建(或准备显示)子控件,以便我可以完成上述任务


基本上,我想创建控件的继承权(如在Java中的面板和窗格),父控件在收到WM_create(或其他一些消息)时创建其子控件(只是想知道何时可以开始为其分配子控件)当父窗口接收到WM_CREATE消息时,这些子窗口会依次创建自己的子窗口,从而创建自己的子窗口。

父窗口会接收WM_PARENTNOTIFY以创建子窗口(以及其他一些事件)。确保不要设置WS_EX_NOPARENTNOTIFY扩展样式(默认情况下为对话框窗口类创建的控件设置)


创建窗口时作为WM\u PARENTNOTIFY的一部分接收的数据包括在WM\u NCCREATE/WM\u CREATE期间发送到窗口的LPCREATESTRUCT(只有在成功创建窗口时才会发生WM\u PARENTNOTIFY)。

父窗口接收用于创建子窗口的WM\u PARENTNOTIFY(以及一些其他事件)。确保不要设置WS_EX_NOPARENTNOTIFY扩展样式(默认情况下为对话框窗口类创建的控件设置)


创建窗口时作为WM_PARENTNOTIFY的一部分接收的数据包括在WM_nCreate/WM_CREATE期间发送到窗口的LPCREATESTRUCT(WM_PARENTNOTIFY仅在成功创建窗口时发生)。

button类的窗口过程由OS(user32.dll)提供,这就是
WM_CREATE
被发送的地方。只能在您注册的类类型的窗口上使用
SetWindowPtr
。但是您在这里没有问题,您知道当
CreateWindowEx
返回时,您的子控件的创建已经完成。您可以通过使用子类化为子窗口接收
WM\u CREATE
,如果这是您想要的(使用
GetClassInfo()
/
RegisterClass()
).button类的窗口过程由操作系统(user32.dll)提供,因此
WM_CREATE
就是在这里发送的。只能在您注册的类类型的窗口上使用
SetWindowPtr
。但是您在这里没有问题,您知道当
CreateWindowEx
返回时,您的子控件的创建已经完成。您可以通过使用子类化为子窗口接收
WM\u CREATE
,如果这是您想要的(使用
GetClassInfo()
/
RegisterClass()
)。是的,这完全符合我的目的。但是,如果我的父子继承权的深度增加了,比如说父-->子-->孙-->曾孙?在父级收到子级父级通知后,我将孙辈分配给子级,但随后我需要在父级中侦听孙辈父级通知以将曾孙辈分配给它。孙子女家长通知是否会到达家长程序。一般来说,这个工作流程对组件树的任何深度都有效吗?至于子类化和注册我自己的类,它工作得很好,但额外的工作往往会变得麻烦,因为要更改窗口树中创建特定子级的位置,来自WM_PARENTNOTIFY文档:此消息也发送到子窗口的所有祖先窗口,包括顶级窗口。是的,这完全符合我的目的。但是,如果我的父子继承权的深度增加了,比如说父-->子-->孙-->曾孙?在父级收到子级父级通知后,我将孙辈分配给子级,但随后我需要在父级中侦听孙辈父级通知以将曾孙辈分配给它。孙子女家长通知是否会到达家长程序。一般来说,这个工作流程对组件树的任何深度都有效吗?至于子类化和注册我自己的类,它工作得很好,但额外的工作往往会变得麻烦,因为要更改窗口树中创建特定子级的位置,来自WM_PARENTNOTIFY文档:此消息也发送到子窗口的所有祖先窗口,包括顶级窗口。