Перетаскивание окна за любое место
Перетаскивание окна за любое место, а не только за заголовок, реализуется очень просто, но смотрится очень эффектно. Тем более, что окно может быть вообще без заголовка. Для этого в обработчик окна надо добавить следующий код.Code (Assembler) : Убрать нумерацию
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ......
- ; Нажата левая кнопка мышки на окне?
- cmp [msg], WM_LBUTTONDOWN
- je drag_window
- ......
- drag_window:
- ; Освободить захват мыши окном в текущем потоке и
- ; восстановить обычную обработку ввода данных от мыши
- invoke ReleaseCapture
- ; Перенаправить сообщение передвижения мышью SC_MOVE на заголовок окна
- ; 61458 = SC_MOVE or HTCAPTION, в FASM по умолчанию не определено,
- ; поэтому сразу задается числовым значением
- invoke SendMessage,[hwnddlg],WM_SYSCOMMAND,61458,0
- ......
Просмотров: 7449 | Комментариев: 6
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
int_90
(26.01.2012 в 17:20):
Буду разбираться Все равно спасибо за такое количество инфы по FASM из за некоторой мучил безуспешно гугл
ManHunter
(26.01.2012 в 17:06):
В моем исходнике все работает, а чужие я не исправляю.
int_90
(26.01.2012 в 17:00):
В том то и дело что включены ( я вставляю после
proc WindowProc hwnd,wmsg,wparam,lparam а в cmp[wmsg], WM_LBUTTONDOWN msg на wmsg заменил Я так понимаю что у меня ошибка в размещении метки drag_window: окно просто не перересовывается Ее случайно не в цикл закидывать нужно ?
proc WindowProc hwnd,wmsg,wparam,lparam а в cmp[wmsg], WM_LBUTTONDOWN msg на wmsg заменил Я так понимаю что у меня ошибка в размещении метки drag_window: окно просто не перересовывается Ее случайно не в цикл закидывать нужно ?
ManHunter
(26.01.2012 в 16:09):
Включай куки и качай браузером. Очевидно же.
int_90
(26.01.2012 в 16:08):
При перетаскивании окно сдыхает при попытке перетащить а демка не скачивается ругается на куки
Добавить комментарий
Заполните форму для добавления комментария
cmp [msg], WM_NCHITTEST ; 84h
je drag_window
.......
drag_window:
mov eax, HTCAPTION ; 2h
ret