none
Как сохранить позицию окна Проводника? RRS feed

  • Вопрос

  • Всем привет!
    Написал программу, которая по нажатию комбинации клавиш перемещает окно в центр экрана.
    Работает, но после перемещения (пробовал и SetWindowPos(), и MoveWindow()) позиция окна именно проводника не запоминается после его закрытия. Запоминается только если это окно после перемещения дополнительно свернуть и восстановить (или развернуть на весь экран и восстановить).
    Как я понимаю, координаты и размер проводника запоминаются где-то в реестре. Может есть какое-то сообщение, которое можно послать окну, чтобы информация в реестре обновилась?
    16 января 2020 г. 8:05

Ответы

Все ответы

  • Здравствуйте,

    Может быть как здесь: Saving the window placement

    Или как здесь:

      ..........

    // Commit to registry AfxGetApp()->WriteProfileInt(strWindow, _T("Top"), wp.rcNormalPosition.top); AfxGetApp()->WriteProfileInt(strWindow, _T("Left"), wp.rcNormalPosition.left); ..........




    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.



    17 января 2020 г. 8:02
    Модератор
  • К сожалению, SetWindowPlacement так же не сохраняет позицию окна проводника. А WriteProfileInt(), WriteProfileBinary() относятся к MFC. У меня же - чистый WinAPI.
    17 января 2020 г. 9:46
  • не знаю насчет реестра, но при сворачивании/разворачивании окну посылается сообщение WM_SIZE
    17 января 2020 г. 10:22
  • WM_SIZE тоже не помог, так же как и WM_MOVE. Но вы натолкнули меня на одну мысль.

    В общем работает такая связка:

    SendMessage(..., WM_ENTERSIZEMOVE, ...);

    SetWindowPlacement(...);

    SendMessage(..., WM_EXITSIZEMOVE, ...);

    17 января 2020 г. 13:27