Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无法还原最小化窗口_C_Windows_Winapi - Fatal编程技术网

C 无法还原最小化窗口

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 );

我正在使用本机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_还原处理程序进行的几项操作,包括:

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”掉了它,它就再也不会回来了


现在回到正轨:\

如果你已经解决了问题,你应该添加解决方案作为答案并接受它。谢谢,显然我明天可以这样做。如果你已经解决了问题,你应该添加解决方案作为答案并接受它。谢谢,显然我明天可以这样做。