我正在使用本機C和win32 API處理應用程序框架。編寫處理程序,根據用戶的操作在框架內放置一個擁有的窗口。到目前爲止,我有:無法恢復最小化窗口
case WM_WINDOWPOSCHANGED:
GetWindowRect(hwnd, &rect);
SetWindowPos(
hexp, HWND_TOP, rect.left + 5, rect.top + 30,
0, 0, SWP_SHOWWINDOW | SWP_NOSIZE);
它工作得很好,除非我似乎不能從最小化狀態恢復它。我搜索了論壇,並嘗試了幾件事情與SC_RESTORE處理程序包括:
case SC_RESTORE:
ShowWindow(hwnd, SW_RESTORE);
SetForegroundWindow(hwnd);
BringWindowToTop(hwnd); // Doesn't work
我也試過:
case SC_RESTORE:
SendMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0); // no luck either
似乎沒有任何工作。我現在必須右鍵單擊並選擇應用程序最小化時的還原。任何線索將是最受歡迎的。
**更新**我找到了一個改進。
首先不確定使用WM_WINDOWPOSCHANGED事件來操縱很多窗口是個好主意。該系統似乎觸發了很多。另外,雖然我仍在使用它,但我決定先檢查窗口是否最小化。看起來系統正在繼續檢查位置變化,同時最小化。這顯然使任務欄掛起。現在工作好多了,謝謝。強迫事物似乎並不是一種好的方式:/
如果你已經解決您的問題,您應該添加的溶液,作爲一個答案,並接受它。 – 2012-02-03 19:57:59
謝謝,我明天可以做到這一點。 – Chuck 2012-02-04 11:01:30