我正在使用本机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事件来操纵很多窗口是个好主意。该系统似乎触发了很多。另外,当我还在使用它时,我决定先检查窗口是否最小化。似乎系统正在继续检查位置变化,同时最小化。这显然使任务栏挂起了。它现在好多了,谢谢。强迫事情似乎不是一个好方法:/
答案 0 :(得分:1)
我想知道我们是否可以回答我们自己的问题。好吧,我从来没有接触到过多的API,看起来我从一个“错误的”概念开始。我以为我要写一个拥有和管理Windows的框架,事实证明操作系统告诉我迷路了。整个事情似乎进入“空闲模式”并挂在任务栏上。然后我意识到已经有可以管理的窗口了。它们被称为“对话”。因此,我将停止尝试将窗口粘合在一起并使用适当的对话框。这方面这是一个有趣的实验路径。 Sry把你的时间花在新手问题上。那么现在你知道你的窗口是否挂在任务栏上“Windows”掉了它,它永远不会回来。
现在回到正轨:\