Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Перетаскивание формы не caption
Посл.ответ Сообщение

Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 12 июля 2006 12:44
· Личное сообщение · #1

как можно сделать на асме так, чтобы перетаскивать форму можно было не только за её caption? Нашёл множество примеров на delphi, но для асма нигде нет.




Ранг: 61.7 (постоянный)
Активность: 0.050
Статус: Участник
я

Создано: 12 июля 2006 13:24
· Личное сообщение · #2

ну вот смотри. пример на delphi

procedure TForm1.FormMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
end;

а на асме, в цикле WinMain, обрабатывай нажатие мыши на форме и пиши этот же код. тока заместо Perform(WM_SYSCOMMAND, $F012, 0);
будет что-то типа
invoke SendMessage,hWnd,WM_SYSCOMMAND,$F012,0



Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 12 июля 2006 13:31
· Личное сообщение · #3

BaGiE пишет:
нажатие мыши на форме

Т.е надо обработать сообщение MOUSEDOWN, но в инклуд файлах я его не нашёл (я пишу на fasm'е)



Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 12 июля 2006 13:57 · Поправил: [norwed]
· Личное сообщение · #4

Всё, нашёл! Надо обработать WM_LBUTTONDOWN.



Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 12 июля 2006 14:07
· Личное сообщение · #5

Теперь возник новый вопрос. Как обработать это сообщение например у bitmap'а, который находится на этой форме?



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 12 июля 2006 16:25
· Личное сообщение · #6

[norwed] пишет:
Как обработать это сообщение например у bitmap'а,

У каждого объекта на форме, есть свой обработчик событий/сообщений. Для многих он стандартный, но всегда можно написать свой для спец-обработки, а все остальные сообщения передавать(если не задумано что-то "мерзкое") в стандартный. Это вообще-то азбука - читай книги.



Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 12 июля 2006 16:35
· Личное сообщение · #7

tundra37 пишет:
У каждого объекта на форме, есть свой обработчик событий/сообщений

Я знаю
Может кто-нибудь примерчик даст?



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 12 июля 2006 17:59
· Личное сообщение · #8

Masm32

; Устанавливаем новый обработчик событий/сообщений
invoke SetWindowLong,hControlForBitmap,GWL_WNDPROC,ADDR NewProc
mov hOldProc,eax

NewProc Proc hControl:DWORD, Msg:DWORD, wParam:DWORD, lParam:DWORD
.if Msg == WM_LBUTTONDOWN

; Здесь обработчик WM_LBUTTONDOWN

.endif
invoke CallWindowProc,hOldProc,hControl,Msg,wParam,lParam
ret
NewProc EndP

;Возвращаем старый обработчик событий/сообщений
invoke SetWindowLong,hControlForBitmap,GWL_WNDPROC,hOldProc

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 12 июля 2006 18:08
· Личное сообщение · #9

Всем спасибо


 eXeL@B —› Программирование —› Перетаскивание формы не caption
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати