INFO: SetParent and Control Notifications
ID: Q104069
|
The information in this article applies to:
-
Microsoft Windows Software Development Kit (SDK)
-
Microsoft Win32 Software Development Kit (SDK)
-
Microsoft Windows 2000
SUMMARY
An edit, list box, or combo box control sends notifications to the
original parent window even after SetParent has been used to change
the control's parent. A button control sends notifications to the new
parent after SetParent has been used to change its parent.
Edit, list box, and combo box controls keep a private copy of the
window handle of the parent at the time of creation. This handle is
not changed when SetParent is used to change the control's parent.
Consequently, the notifications (EN_*, LBN_*, and CBN_* notifications)
go to the original parent.
Note that WM_PARENTNOTIFY messages go to the new parent and
GetParent() returns the new parent. If it is required that
notifications go to the new parent window, code must be added to the
old parent's window procedure to pass on the notifications to the new
parent.
For example:
case WM_COMMAND:
hwndCtl = LOWORD(lParam);
// If notification is from a control and the control is no longer this
// window's child, pass it on to the new parent.
if (hwndCtl && !IsChild(hWnd, hwndCtl))
SendMessage(GetParent(hwndCtl), WM_COMMAND, wParam, lParam);
else Do normal processing;
Button controls send notifications to the new parent after SetParent
has been used to change the parent.
Additional query words:
listbox combobox
Keywords : kbComboBox kbCtrl kbEditCtrl kbListBox kbNTOS kbWinOS2000 kbSDKWin32 kbGrpUser kbWinOS
Version : WINDOWS:
Platform : WINDOWS
Issue type : kbinfo