Rect Ctrl::GetDefaultWindowRect() { #ifdef PLATFORM_WINCE return Rect(0, 0, 100, 100); #else HWND hwnd = ::CreateWindow("UPP-CLASS-A", "", WS_OVERLAPPED, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, NULL); Rect sr; if(hwnd) { ::ShowWindow(hwnd, SW_HIDE); sr = GetScreenClient(hwnd); ::DestroyWindow(hwnd); } else sr = RectC(20, 20, 500, 350); return sr; #endif }
LRESULT TopWindow::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { GuiLock __; HWND hwnd = GetHWND(); #ifndef PLATFORM_WINCE bool inloop; #endif switch(message) { #ifndef PLATFORM_WINCE case WM_QUERYENDSESSION: inloop = InLoop(); WhenClose(); return inloop ? !InLoop() : !IsOpen(); case WM_ENDSESSION: EndSession() = true; PostQuitMessage(0); return 0; #endif case WM_CLOSE: if(IsEnabled()) { IgnoreMouseUp(); WhenClose(); } return 0; case WM_WINDOWPOSCHANGED: #ifndef PLATFORM_WINCE if(IsIconic(hwnd)) state = MINIMIZED; else if(IsZoomed(hwnd)) state = MAXIMIZED; else #endif { state = OVERLAPPED; overlapped = GetScreenClient(hwnd); } Layout(); break; } return Ctrl::WindowProc(message, wParam, lParam); }
LRESULT TopWindow::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { GuiLock __; HWND hwnd = GetHWND(); #ifndef PLATFORM_WINCE bool inloop; #endif switch(message) { #ifndef PLATFORM_WINCE case WM_QUERYENDSESSION: inloop = InLoop(); WhenClose(); return inloop ? !InLoop() : !IsOpen(); #endif case WM_CLOSE: if(IsEnabled()) { IgnoreMouseUp(); WhenClose(); } return 0; case WM_WINDOWPOSCHANGED: if(!isopen) break; #ifndef PLATFORM_WINCE if(IsIconic(hwnd)) state = MINIMIZED; else if(IsZoomed(hwnd)) state = MAXIMIZED; else #endif { state = OVERLAPPED; if(IsWindowVisible(hwnd)) overlapped = GetScreenClient(hwnd); // 12-05-23 Tom added 'if(IsWindowVisible(hwnd))' to get only proper rectangles } LLOG("TopWindow::WindowProc::WM_WINDOWPOSCHANGED: overlapped = " << overlapped); Layout(); break; } return Ctrl::WindowProc(message, wParam, lParam); }