ChangeLog Make status send its notifications to the parent window passed to it in CREATESTRUCT. Based on a treeview patch by Igor Grahek. Index: dlls/comctl32/status.c =================================================================== RCS file: /var/cvs/wine/dlls/comctl32/status.c,v retrieving revision 1.63 diff -u -r1.63 status.c --- dlls/comctl32/status.c 21 Oct 2003 23:43:14 -0000 1.63 +++ dlls/comctl32/status.c 19 Nov 2003 05:15:55 -0000 @@ -67,6 +67,7 @@ typedef struct { HWND Self; + HWND Notify; WORD numParts; UINT height; BOOL simple; @@ -170,8 +171,7 @@ dis.hDC = hdc; dis.rcItem = r; dis.itemData = (INT)part->text; - SendMessageW (GetParent (infoPtr->Self), WM_DRAWITEM, - (WPARAM)dis.CtlID, (LPARAM)&dis); + SendMessageW (infoPtr->Notify, WM_DRAWITEM, (WPARAM)dis.CtlID, (LPARAM)&dis); } else { @@ -561,7 +561,7 @@ INT width, x, y; RECT parent_rect; - GetClientRect (GetParent (infoPtr->Self), &parent_rect); + GetClientRect (infoPtr->Notify, &parent_rect); infoPtr->height = height + VERT_BORDER; width = parent_rect.right - parent_rect.left; x = parent_rect.left; @@ -779,7 +779,7 @@ nmhdr.hwndFrom = infoPtr->Self; nmhdr.idFrom = GetWindowLongW (infoPtr->Self, GWL_ID); nmhdr.code = SBN_SIMPLEMODECHANGE; - SendMessageW (GetParent (infoPtr->Self), WM_NOTIFY, 0, (LPARAM)&nmhdr); + SendMessageW (infoPtr->Notify, WM_NOTIFY, 0, (LPARAM)&nmhdr); InvalidateRect(infoPtr->Self, NULL, FALSE); return TRUE; } @@ -829,13 +829,14 @@ SetWindowLongW (hwnd, 0, (DWORD)infoPtr); infoPtr->Self = hwnd; + infoPtr->Notify = lpCreate->hwndParent; infoPtr->numParts = 1; infoPtr->parts = 0; infoPtr->simple = FALSE; infoPtr->clrBk = CLR_DEFAULT; infoPtr->hFont = 0; - i = SendMessageW(GetParent (hwnd), WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY); + i = SendMessageW(infoPtr->Notify, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY); infoPtr->NtfUnicode = (i == NFR_UNICODE); GetClientRect (hwnd, &rect); @@ -923,7 +924,7 @@ } if (!(dwStyle & CCS_NORESIZE)) { /* don't resize wnd if it doesn't want it ! */ - GetClientRect (GetParent (hwnd), &rect); + GetClientRect (infoPtr->Notify, &rect); width = rect.right - rect.left; infoPtr->height = textHeight + 4 + VERT_BORDER; SetWindowPos(hwnd, 0, lpCreate->x, lpCreate->y - 1, @@ -1074,7 +1075,7 @@ if (GetWindowLongW(infoPtr->Self, GWL_STYLE) & CCS_NORESIZE) return FALSE; /* width and height don't apply */ - GetClientRect (GetParent(infoPtr->Self), &parent_rect); + GetClientRect (infoPtr->Notify, &parent_rect); width = parent_rect.right - parent_rect.left; x = parent_rect.left; y = parent_rect.bottom - infoPtr->height; @@ -1100,13 +1101,14 @@ static LRESULT STATUSBAR_SendNotify (HWND hwnd, UINT code) { + STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr(hwnd); NMHDR nmhdr; TRACE("code %04x\n", code); nmhdr.hwndFrom = hwnd; nmhdr.idFrom = GetWindowLongW (hwnd, GWL_ID); nmhdr.code = code; - SendMessageW (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr); + SendMessageW (infoPtr->Notify, WM_NOTIFY, 0, (LPARAM)&nmhdr); return 0; } @@ -1220,7 +1222,7 @@ case WM_NCLBUTTONUP: case WM_NCLBUTTONDOWN: - PostMessageW (GetParent (hwnd), msg, wParam, lParam); + PostMessageW (infoPtr->Notify, msg, wParam, lParam); return 0; case WM_NOTIFYFORMAT: -- Dimi.