C 无法还原最小化窗口
我正在使用本机C和win32 API开发应用程序框架。编写处理程序,根据用户的操作在框架内放置一个拥有的窗口。到目前为止,我已经:C 无法还原最小化窗口,c,windows,winapi,C,Windows,Winapi,我正在使用本机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 );
case WM_WINDOWPOSCHANGED:
GetWindowRect(hwnd, &rect);
SetWindowPos(
hexp, HWND_TOP, rect.left + 5, rect.top + 30,
0, 0, SWP_SHOWWINDOW | SWP_NOSIZE );
它工作得很好,但我似乎无法从最小化状态恢复它。我搜索了论坛,并尝试了使用SC_还原处理程序进行的几项操作,包括:
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事件来操作许多窗口是否是一个好主意。这个系统似乎触发了很多。当我还在使用它的时候,我决定先检查窗口是否最小化。系统似乎在最小化的同时继续检查位置变化。这显然是任务栏挂起的原因。现在好多了,谢谢。强迫事情似乎也不是一个好办法://我想知道我们是否可以回答自己的问题。我从来没有用API接触过C,看起来我是从一个“错误”的概念开始的。我以为我要写一个拥有和管理windows的框架,结果发现操作系统告诉我要迷路。似乎整个事情都进入了“空闲模式”,并挂在任务栏上。然后我意识到已经有了可以管理的窗口。它们被称为“对话”。因此,我将停止尝试将窗口粘合在一起,并使用适当的对话框。这条路很有趣。请慢慢回答新手问题。好吧,现在你知道如果你的窗口挂在任务栏上,“Windows”掉了它,它就再也不会回来了
现在回到正轨:\我想知道是否允许我们回答自己的问题。我从来没有用API接触过C,看起来我是从一个“错误”的概念开始的。我以为我要写一个拥有和管理windows的框架,结果发现操作系统告诉我要迷路。似乎整个事情都进入了“空闲模式”,并挂在任务栏上。然后我意识到已经有了可以管理的窗口。它们被称为“对话”。因此,我将停止尝试将窗口粘合在一起,并使用适当的对话框。这条路很有趣。请慢慢回答新手问题。好吧,现在你知道如果你的窗口挂在任务栏上,“Windows”掉了它,它就再也不会回来了
现在回到正轨:\如果你已经解决了问题,你应该添加解决方案作为答案并接受它。谢谢,显然我明天可以这样做。如果你已经解决了问题,你应该添加解决方案作为答案并接受它。谢谢,显然我明天可以这样做。