diff --git a/dlls/comctl32/ipaddress.c b/dlls/comctl32/ipaddress.c index 15d39f5..bfa8c57 100644 --- a/dlls/comctl32/ipaddress.c +++ b/dlls/comctl32/ipaddress.c @@ -253,6 +253,13 @@ static LRESULT IPADDRESS_Enable (IPADDRESS_INFO *infoPtr, BOOL enabled) return 0; } +static void IPADDRESS_SetFont (IPADDRESS_INFO *infoPtr, HFONT hFont, BOOL redraw) +{ + int i; + + for (i = 0; i < 4; i++) + SendMessageW(infoPtr->Part[i].EditHwnd, WM_SETFONT, (WPARAM) hFont, (LPARAM) redraw); +} static LRESULT IPADDRESS_Paint (const IPADDRESS_INFO *infoPtr, HDC hdc) { @@ -541,11 +548,16 @@ IPADDRESS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) TRACE("(hwnd=%p msg=0x%x wparam=0x%lx lparam=0x%lx)\n", hwnd, uMsg, wParam, lParam); - if (!infoPtr && (uMsg != WM_CREATE)) + if (!infoPtr && (uMsg != WM_CREATE && uMsg != WM_NCCREATE)) return DefWindowProcW (hwnd, uMsg, wParam, lParam); switch (uMsg) { + case WM_NCCREATE: + /* Make sure we have a client edge */ + SetWindowLongW(hwnd, GWL_EXSTYLE, GetWindowLongW(hwnd, GWL_EXSTYLE) | WS_EX_CLIENTEDGE); + return TRUE; + case WM_CREATE: return IPADDRESS_Create (hwnd, (LPCREATESTRUCTA)lParam); @@ -555,6 +567,10 @@ IPADDRESS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_ENABLE: return IPADDRESS_Enable (infoPtr, (BOOL)wParam); + case WM_SETFONT: + IPADDRESS_SetFont (infoPtr, (HFONT)wParam, (BOOL)lParam); + break; + case WM_PAINT: return IPADDRESS_Paint (infoPtr, (HDC)wParam); @@ -569,6 +585,10 @@ IPADDRESS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } break; + case WM_SETFOCUS: + IPADDRESS_GotoNextField (infoPtr, -1, POS_SELALL); + break; + case IPM_CLEARADDRESS: IPADDRESS_ClearAddress (infoPtr); break;