Win32/MFC Получить прямоугольник окна из прямоугольника клиента
Вопрос
Я знаю, что где-то есть функция, которая принимает прямоугольник клиента и преобразует его в прямоугольник окна.Я просто не могу найти/запомнить это!
Кто-нибудь знает, что это?
Он сделает что-то похожее на:
const CRect client(0, 0, 200, 200);
const CRect window = ClientRectToWindowRect(client);
SetWindowPos(...)
Решение
Вы, вероятно, думаете о AdjustWindowRectEx()
.Имейте в виду, что это предназначено для использования, когда создание окно — нет гарантии, что он создаст точный набор размеров окна для существующего окна;для этого используйте GetWindowRect()
.
Другие советы
Если вы хотите сопоставить координаты клиента с координатами окна, используйте Клиенттовиндов API.
Если вы хотите сопоставить координаты клиента с координатами экрана, используйте Клиенттоскрин API.
Для изменения положения управления используйте:
RECT client;
::SetRect(&client, 0, 0, 200, 200);
::MapWindowPoints(hwndControl, ::GetParent(hwndControl), (POINT*)&client, 2);
::SetWindowPos(...)
Не связан с StackOverflow