Приложение MFC не может максимизироваться только в режиме администратора - PullRequest
0 голосов
/ 05 октября 2018

У меня есть приложение MFC в Windows 10, у которого отключена кнопка максимизации, поскольку она не предназначена для изменения размера.Если программа запускается не как администратор / с повышенными правами, тогда пользователь может свернуть окно на панель задач, а затем восстановить / развернуть его, как обычно.Однако, если приложение запускается с правами администратора или с повышенными правами, окно можно свернуть до панели задач, но не восстановить / развернуть.

То, что я пробовал:

  • Слева-щелкнув по значку на панели задач - ничего не происходит.
  • Наведите указатель мыши на значок на панели задач, а затем наведите курсор на крошечный предварительный просмотр над значком - это показывает окно, но исчезает, как только вы перестаете зависать и нажимаете на кнопкумаленький предварительный просмотр ничего не делает.
  • Включение кнопки максимизации и установка для свойства NoActivate значения true - не помогает.
  • Alt-tabbing для приложения ничего не делает.
  • Я проверил приложение, когда оно имеет эту проблему, используя spy ++ 64, и я могу видеть сообщения, но я не уверен, что этонеправильно.См. Ниже

Это журнал успешного (не админского) свертывания, а затем максимизации того, где была сделана попытка максимизировать вокруг идентификатора 290: https://pastebin.com/kRT4ABrC

Это логсвернуть безуспешно (администратор), а затем максимизировать, где попытка максимизации произошла вокруг идентификатора 176: https://pastebin.com/nAiXUa8p

У кого-нибудь есть идеи, что не так?Похоже, что в неудачном журнале отсутствует куча сообщений WM_ACTIVATEAPP, но я не уверен, что еще выглядит не так.

"code" necessary for pastebin link posts

1 Ответ

0 голосов
/ 05 октября 2018

Нашел проблему!Я искал наш код для "WM" и нашел несколько пользовательских обработчиков сообщений, включая один для ON_WM_MOVE ( См. Для получения дополнительной информации. ).Я до сих пор не понимаю, почему это вызывает проблему, но ее устранение дает нам желаемый эффект.Ниже приведен код, который вызывал проблему для любого любопытного.Метод positionPages - это пользовательский код, который может быть виновником:

void CMyDlg::OnMove(int x, int y)
{
    CDialogEx::OnMove(x, y);
    positionPages(false); // This keeps the page being displayed in the right location
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...