MFC App无法仅在管理员模式下最大化

时间:2018-10-05 00:07:40

标签: mfc windows-10 windows-messages

我在Windows 10上拥有一个MFC应用程序,该应用程序已禁用“最大化”按钮,因为它并非旨在调整大小。如果程序不是以管理员/提升用户身份运行的,则用户可以将窗口最小化到任务栏,然后像往常一样还原/最大化它。但是,如果应用程序以管理员/提升的特权运行,则可以将窗口最小化到任务栏,但永远不会还原/最大化。

我尝试过的事情:

  • 左键单击任务栏上的图标-没有任何反应。
  • 将鼠标悬停在任务栏上的图标上,然后将鼠标悬停在微小的预览上 图标上方-这将显示窗口,但是一旦您停下就会消失 悬停并单击小的预览没有任何作用。
  • 启用最大化按钮并将NoActivate属性设置为true-无济于事。
  • 按Tab键不执行任何操作。
  • 我使用spy ++ 64检查了该应用程序是否存在此问题,并且可以看到消息,但我不确定这是怎么回事。见下文

这是成功(非管理员)最小化然后最大化的日志,其中最大尝试发生在ID 290周围:https://pastebin.com/kRT4ABrC

这是失败(管理员)最小化然后最大化的日志,其中最大尝试发生在ID 176周围:https://pastebin.com/nAiXUa8p

任何人都有什么想法是什么错误?看起来失败日志确实缺少一堆WM_ACTIVATEAPP消息,但是我不确定还有什么其他情况。

"code" necessary for pastebin link posts

1 个答案:

答案 0 :(得分:-2)

发现了问题!我在代码中搜索了“ WM”,并找到了一些自定义消息处理程序,其中包括一个ON_WM_MOVE(See for more info.)。我仍然不明白为什么它会引起问题,但是将其删除可以达到预期的效果。以下是引起好奇的人问题的代码。 positionPages方法是自定义代码,可能是罪魁祸首:

void CMyDlg::OnMove(int x, int y)
{
    CDialogEx::OnMove(x, y);
    positionPages(false); // This keeps the page being displayed in the right location
}