我正在使用本机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