maaGames
@maaGames
Погроммирую программы

SetWindowPos без пространства по краям?

Использую SetWindowPos(wnd,0, 0,0, 0,0, SWP_NOSIZE), чтобы сдвинуть окно в левый верхний угол. Сверху окно ставится впритык, а слева остаётся зазор. Можно как-то сдвигать впритык к левому краю, чтобы не появлялся зазор?
Собственно, так же открываются любые приложения, которые вручную ставились впритык к краю. После их последующего открытия они чуть сдигаются, оставляя несколько пикселей для торчания обоев. От этого тоже хотелось бы избавиться.

5fbdc7dfbd6cf748573712.png

Похоже, что это зазоры для SM_CXSIZEFRAME, SM_CYSIZEFRAME. Неужели нужно SetWindowPos(wnd,0, -SM_CXSIZEFRAME,0, 0,0, SWP_NOSIZE) делать? Больше всего смущает, что свеху-то зазор не появляется.

Дополнено:
SM_CXSIZEFRAME возвращает 4 пиксела, зазор слева 8 пикселов. Т.е. зазор становится в два раза меньше, но остаётся.
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
Когда то давно делал приложение, убирающее рамку и изменяющее размер окна любого приложения под весь доступный десктоп минус панель.. никаких 'минус рамка' не было, ставил 0,0 и размер десктопа.
SetWindowLong(hWnd,GWL_STYLE,0);
SetWindowLong(hWnd,GWL_STYLE,WS_POPUP|WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED);
SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_RIGHTSCROLLBAR|WS_EX_APPWINDOW);
SetWindowPos(hWnd,HWND_TOP,x,y,sx,sy,SWP_SHOWWINDOW);


Какой стиль у окна сделали? там не должно быть ничего с border.

p.s. странно что у консольных окон (которые стоят в win32 особняком) так же реальные координаты на несколько пикселов левее и после максимизации оно автоматом уходит в минус
Ответ написан
maaGames
@maaGames Автор вопроса
Погроммирую программы
https://github.com/wangwenx190/framelesshelper/issues/3

5fc47992ca933325008460.png

Вот тут и хорошо показана суть проблемы и, похоже, есть её решение. Нужно перехватывать сообщение WM_NCCALCSIZE и подменять размеры "не клиентской" области окна. Пока не проверил, но, скорее всего, придётся писать свои обработчики для изменения размера окна, чтобы не снаружи, а внутри окна мышка отрабатывала. Или целиться в рамку пиксельной толщины, что нереально.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы