![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Надо сделать, чтобы при изменении размеров окна, курсор с ухваченной границей сдвигался на N пикселей в сторону движения мыши.
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
А сейчас он на сколько двигается?
|
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
||||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Т.е. что бы не плавно изменялся размер, а рывками по N пикселей?
|
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
||||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Тебе нужно сообщение WM_SIZING оно передаётся еще до изменения самого окна, в lparam содержится указатель на структуру RECT значения в которой можно поменять на собственные.
|
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
По-моему это не совсем то, что я имел в виду, если я правильно понял, размер окна здесь изменится, когда курсор отодвинится от границы на N пикселей, а я хотел чтобы при перемещении курсора на один пиксель, он перемещался на N пикселей вместе с ухваченной границей.
|
|||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Тогда при каждом WM_SIZING проверяем на сколько пикселей разница между границей и курсором умножаем на N соответственно изменяя значения в GrRc и перемещаем курсор в нужную координату - SetCursorPos .
|
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
В общем предложенный вариант тоже подойдёт, но почему-то не работает
не оказывает влияния на изменение размеров окна |
|||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Ты один момент не заметил: замени break; на return (1); т.к. при в твоём случае вызывается стандартный обработчик сообщения.
А возвращая TRUE значение показываешь что программа обрабатывает это собщение. |
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
То же самое
|
|||
|
||||
| Mihhail |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Да, вот сразу не заметил - ты же не изменяешь координаты прямоугольника окна GrRc, естественно всё как есть остаётся! Вычислять нужно и менять правую/левую верхнюю нижнюю границы: GrRc.right = .... GrRc.bottom = .... в зависимости от того какая из границ перетаскивается. |
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
хорошо бы код вместо комментария увидеть, уже много времени потратил, чтобы разобраться, что-то не сходится. А оно у меня ограничено. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
ЭТО? |
|||
|
||||
| ZufuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Похоже, но надо чтобы размер ширины клиентской области всегда был кратен N, а по высоте фиксирован.
Это сообщение отредактировал(а) ZufuS - 19.12.2007, 23:05 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |