powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
8 сообщений из 8, страница 1 из 1
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35361770
Avtopic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите в следующем вопросе:

знающие люди знают, что такое структура WINDOWPOS.
Dim wp As WINDOWPOS

во время сабклассинга в сообщении WM_WINDOWPOSCHANGING, проверяю wp.x и wp.сx и при определенных условиях меняю wp.x и wp.сx и копирую обратно в lParam
как результат, окно меняет ширину и отображается правее.

это все происходит при перетаскивании окна за caption.
но: пока left button нажата и происходит перетаскивание, окно то меняет позицию, но при следующем приходе сообщении WM_WINDOWPOSCHANGING wp.x и wp.сx имеют такие значения как будто я их не менял.
Повторю, окно отображается так как я хотел но wp.x и wp.сx приходят без изменении.

Вопрос такой, что и когда послать окну чтобы изменения структуры WINDOWPOS в сообщении WM_WINDOWPOSCHANGING, зафиксировались.
посылка сообщении WM_WINDOWPOSCHANGED или WM_EXITSIZEMOVE ничего не дают (как и ожидалось)
спасибо

код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Case WM_WINDOWPOSCHANGIN
   If CmdType = SC_MOVE Then
      CopyMemory wp, ByVal lParam, Len(wp
      ...
      '// проверяется условие
      If wp.x >......        '// сюда wp.x приходит, как будто не изменял
      ...
      '// если условие
      wp.cx = ...
      wp.x = ...             '// несмотря на то что wp.x здесь изменяю
                             '// и окно меняет позицию
CopyMemory ByVal lParam, wp, Len(wp)

 '// что послать здесь окну?
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35361798
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какова цель этих манипуляций?
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35361858
Avtopic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
цель этих манипуляций docking.

в моем конкретном случае при “undock” (расчленении двух окон) окно должен получить “начальный” размер, или сохранить “ docking ” размер, если окно отпустили близко от основного окна.

в основном все примеры используют вместо описанного, вариант рисования “dragging” frame –а, это не устраивает
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35361899
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetWindowPos с нужными параметрами сгенерирует WM_WINDOWPOSCHANGING с соответствующими значениями в структуре.
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35361962
Avtopic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению и SetWindowPos и MoveWindow и изменение флагов
WINDOWPOS структуры, все пробовал. Пока не отпустил клавишу , изменения не фиксируются.

даже пробовал посылать
WM_NCLBUTTONUP
WM_NCLBUTTONDOWN
и т.п. с нижними параметрами не помогло...
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35362071
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем их там фиксировать? Может достаточно запоминать в переменной?
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35362157
Avtopic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на рисунке видно суть проблемами
1 - это главное окно
2 - положение при Docking
3 – размер, который получает при перетаскивании

до этого все прекрасно!

4 - то что ми видим что тащим
5 - то что видит windows

следовательно, прилипание с правой стороны начинается не в том положении, а когда окно дальше находится
...
Рейтинг: 0 / 0
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
    #35362187
Avtopic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При этом нет ни кокой мерцании, или что-то другого.

и еще интересно что,
WINDOWPOS которая приходит в WM_WINDOWPOSCHANGED соответствует позиции – 4
а следующая WINDOWPOS которая приходит в WM_ WINDOWPOSCHANGING соответствует позиции – 5

и так поочередно пока не отпущу курсор
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]