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

знающие люди знают, что такое структура 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
07.06.2008, 13:39
    #35361798
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
Какова цель этих манипуляций?
...
Рейтинг: 0 / 0
07.06.2008, 13:58
    #35361858
Avtopic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
структура WINDOWPOS в сообщении WM_WINDOWPOSCHANGING
цель этих манипуляций docking.

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

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

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

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

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

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

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

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


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