cheaterBY
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Я сам уже допёр, вот как я это реализовал Создал вот такие переменные: dwXPos, dwYPos: Integer; bCanMoveWindow : boolean; вот такую функцию: procedure MoveWindow(dwWindowHandle: DWORD);stdcall; var p: TPoint; begin while bCanMoveWindow do begin GetCursorPos(p); SetWindowPos(dwWindowHandle, 0, p.X-dwXPos, p.Y-dwYPos, 0,0, SWP_NOSIZE+SWP_NOZORDER); end; end; в OnMouseDown вот ето if Button = mbRight then begin bCanMoveWindow := True; dwXpos:=X; dwYPos:=Y; CloseHandle(CreateThread(nil, 0, @MoveWindow, Pointer(Handle), 0, dwThreadId)); end; а в OnMouseUp вот ето bCanMoveWindow := false; и всё работает как в лучших домах парижа. Добавлено: З.Ы. то ShIvADeSt Да и кстати на счёт первого примера вот исходник, и обясни мне чего он не работает с правой клавишей мыши? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } procedure WMNCHitTest(var M: TWMNCHitTest); message WM_NCHITTEST; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMNCHitTest(var M: TWMNCHitTest); begin inherited; if M.Result = htClient then M.Result := htCaption; end; end. | Всего записей: 30 | Зарегистр. 18-08-2006 | Отправлено: 15:17 04-09-2006 | Исправлено: cheaterBY, 15:25 04-09-2006 |
|