Войти
ПодсказкиСтатьи

Как создать Windows окно с точным размером клиентской области.

Автор:

Создаю окно шириной 800, а в итоге размер клиентской области получается 784. Надо исправить.

v2i ClientResize(HWND hWnd, int nWidth, int nHeight)
{
  v2i size;
  RECT rcClient, rcWind;
  POINT ptDiff;
  GetClientRect(hWnd, &rcClient);
  GetWindowRect(hWnd, &rcWind);
  ptDiff.x = (rcWind.right - rcWind.left) - rcClient.right;
  ptDiff.y = (rcWind.bottom - rcWind.top) - rcClient.bottom;
  MoveWindow(hWnd, rcWind.left, rcWind.top, nWidth + ptDiff.x, nHeight + ptDiff.y, TRUE);
  size.x = nWidth + ptDiff.x;
  size.y = nHeight + ptDiff.y;
  return size;
}

Вызвать после создания окна.

Вроде код взят из stackoverflow, ссылки не сохранились.

#windows, #окно

11 сентября 2021

Комментарии [1]

#1
(Правка: 16 окт. 2021, 1:09) 2:33, 14 окт. 2021

а я тупо всё задаю цифрами.

...

const auto positionX = windowRect.left;
const auto positionY = windowRect.top;
const auto positionW = (windowRect.right  - windowRect.left) - 16;
const auto positionH = (windowRect.bottom - windowRect.top)  - 38;

...

нужные мне цифры( 16/38 ), подбираю с помощью Microsoft Spy++

** идея не моя, а подсмотрена в ODRadiant:  https://sourceforge.net/p/odblur/code/HEAD/tree/code/OverDose%20T… ls/ODRadiant/

+ Показать

ПодсказкиСтатьи