在Win32应用程序中,有Windows消息或其他通知,将其放置在其他父窗口中时会发送到子窗口

最佳答案

这很容易在Windows Forms应用程序中进行测试。这是我看到的:

msg=0x18 (WM_SHOWWINDOW) hwnd=0x60c60 wparam=0x1 lparam=0x0 result=0x0
msg=0x46 (WM_WINDOWPOSCHANGING) hwnd=0x60c60 wparam=0x0 lparam=0x563e01c result=0x0
msg=0x85 (WM_NCPAINT) hwnd=0x60c60 wparam=0x1 lparam=0x0 result=0x0
msg=0x14 (WM_ERASEBKGND) hwnd=0x60c60 wparam=0xffffffff930119e8 lparam=0x0 result=0x0
msg=0x47 (WM_WINDOWPOSCHANGED) hwnd=0x60c60 wparam=0x0 lparam=0x563e01c result=0x0
msg=0xf (WM_PAINT) hwnd=0x60c60 wparam=0x0 lparam=0x0 result=0x0
msg=0xe (WM_GETTEXTLENGTH) hwnd=0x60c60 wparam=0x0 lparam=0x0 result=0x0
msg=0xd (WM_GETTEXT) hwnd=0x60c60 wparam=0x6 lparam=0x3fd7928 result=0x0

WM_SHOWWINDOW将是检查父级是否更改的好时机。不能100%确定这是否是WF代码照顾到已更改的父代的副作用,几率很高。否则没有专用消息,因为自从程序明确调用SetParent或SetWindowLongPtr以来,就已经知道该程序了。

关于winapi - 子窗口如何响应其父窗口的更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3858752/

10-13 08:27