Правильно написані програми Windows, які хочуть зберегти своє місце розташування від запуску до запуску, збережуть результати GetWindowPlacement()перед вимкненням, а потім використовують SetWindowPlacement()під час запуску, щоб відновити своє положення.
Часто програми зберігають результати GetWindowPlacement()реєстру як REG_BINARYзручні для використання.
WINDOWPLACEMENTМаршрут має багато переваг по порівнянні з іншими методами:
- Опрацьовує випадок, коли роздільна здатність екрану змінювалася з часу останнього запуску:
SetWindowPlacement()автоматично гарантує, що вікно не буде повністю поза екраном
- Зберігає стан (мінімізований / максимізований), але також зберігає відновлений (нормальний) розмір і положення
- Правильно обробляє метрики робочого столу, компенсуючи положення панелі завдань тощо (тобто використовує "координати робочої області" замість "координати екрана" - методи, які покладаються на збереження координат екрана, можуть страждати від проблеми "ходьби вікон", де вікно завжди буде відображатися щоразу, коли користувач має панель інструментів у верхній частині екрана).
Нарешті, програми, які правильно обробляють відновлення вікон, враховуватимуть nCmdShowпараметр, переданий із оболонки. Цей параметр встановлюється в ярлику, який запускає програму (Звичайний, Згорнутий, Збільшити):
if(nCmdShow != SW_SHOWNORMAL)
placement.showCmd = nCmdShow; //allow shortcut to override
Для додатків, які не є Win32, важливо бути впевненим, що метод, який ви використовуєте для збереження / відновлення позиції вікна, врешті-решт використовує той самий базовий виклик, інакше (наприклад, Java Swing setBounds()/ getBounds()проблема) у підсумку ви напишете багато додаткового коду повторно впровадити функціональність, яка вже є у WINDOWPLACEMENTфункціях.