Форум: "WinAPI";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизИспользование мыши для перемещения окна Найти похожие ветки
← →
wiln (2006-08-13 07:56) [0]Проблема: В обработчике OnMouseMove вызавается функция MoveWindow. procedure TForm1.OnMOuseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Point: TPoint;
begin
if(FlagDown = TRUE)
then
begin
Point.X := X;
Point.Y := Y;
ClientToScreen(Point);
{ R[i]:= Point;
i:= i + 1; }
MoveWindow(HANDLE, Point.X, Point.Y, Form1.Height, Form1.Width, TRUE);
end;
При движении мыши перетаскиваемое окно сильно скачет по экрану. Что не так?
← →
KilkennyCat © (2006-08-13 08:01) [1]координаты не абсолютны, привязаны к форме... обратная связь получается, возбуждение, "завязка"... используйте глобальные коордианты и будет Вам сячастье, а я - спать нафиг...
← →
KilkennyCat © (2006-08-13 08:03) [2]и еще... возможно, TShiftState избавит от FlagDown? И кстати,
> if(FlagDown = TRUE)
> then
это все равно, что "если масло - масляное, то..."...
достаточно if FlagDown then
← →
ANTPro © (2006-08-13 09:46) [3]
procedure TForm1.KOLFormMouseDown(Sender: PControl;
var Mouse: TMouseEventData);
begin
if Mouse.Button=mbLeft then//обязательно левая
begin
ReleaseCapture;
SendMessage(Form.Handle,WM_SYSCOMMAND,$F012,0);
end;
end;
← →
DprYg © (2006-08-13 10:01) [4]
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
ReleaseCapture;
Form1.Perform(WM_SYSCOMMAND, $F012, 0);
end;
end;
И вще в Object Inspector надо в OnMouseDown всех оконных компонентов, за которые можно буксировать, сделать ссылку на FormMouseDown.
← →
Ketmar © (2006-08-13 11:49) [5]> [4] DprYg © (13.08.06 10:01)
изувер. SetCapture() для кого придумано?
← →
Ketmar © (2006-08-13 11:50) [6]вдогон: онять скопировали код из какого-то фака, а понять, как и почему работает -- не удосужилдись?
← →
KilkennyCat © (2006-08-13 13:23) [7]как обычно. а кокретно этот пример как вирус распространился.
← →
DprYg © (2006-08-13 14:21) [8]
> онять скопировали код из какого-то фака, а понять, как и
> почему работает -- не удосужилдись?
Да, действительно, это код из какого-то фака. И копировать мне его не обязательно - для меня запомнить две строчки кода - не проблема. Во всяком случае меньшая, чем писать что-то типа [0]. Насчет того, что я не разбирался как и почему работает, вопрос: это из чего и откуда следует что я этого не сделал? И вообще, каждому (в том числе и Вам) желательно разбираться в незнакомом коде, а не голословно отмахиваться от него.
> как обычно. а кокретно этот пример как вирус распространился.
А почему этот пример так распространился? Ведь не только оттого что вопросы появляются? И еще: под как обычно Вы что подразумеваете?
← →
ANTPro © (2006-08-13 14:29) [9]Ketmar © (13.08.06 11:49) [5]
Код с SetCapture не прокатывает по крайней мере у меня, может покажешь как надо пользовать ?
← →
Ketmar © (2006-08-13 14:55) [10]> [8] DprYg © (13.08.06 14:21)
да? разобрались? заодно и протелепатировали, что мне этот код незнаком? тогда скажите, что это за число такое -- $F012? зачем оно там именно такое? почему второй параметр 0? зачем там ReleaseCapture(), и почему именно там? почему этот код не работает для правой кнопки?
> [9] ANTPro © (13.08.06 14:29)
MSDN подаст.
← →
ANTPro © (2006-08-13 16:39) [11]Ketmar © (13.08.06 14:55) [10]
да? разобрались? заодно и протелепатировали, что мне этот код незнаком? тогда скажите, что это за число такое -- $F012? зачем оно там именно такое? почему второй параметр 0? зачем там ReleaseCapture(), и почему именно там? почему этот код не работает для правой кнопки?
MSDN отказалась тебе подавать?
← →
Ketmar © (2006-08-13 16:47) [12]> [11] ANTPro © (13.08.06 16:39)
лично я это знаю. а вот знает ли автор "наезда"? сильно сомневаюсь.
← →
ANTPro © (2006-08-13 17:15) [13]Ketmar © (13.08.06 16:47) [12]
Я тоже знаю, но по моему код с SetCapture() будет НЕ оптимальным решением.
← →
DprYg © (2006-08-13 17:47) [14]Ketmar © (13.08.06 14:55) [10]
Первый параметр сообщения WM_SYSCOMMAND говорит, что форма находится в состоянии перетаскивания. Если его изменить, например на $F001, то можно будет изменять размер. Второй параметр обработчиком сообщения не используется - можете набрать например 173917298. ReleaseCapture освобождает мышь и связана с событием onMouseMove. Насчет того, что правая кнопка не работает - объясните мне, пожалуйста. Вряд ли я автор - ведь [5], [6] сказали именно вы.
P.S. (to Ketmar) настаиваю на прекращении словесной перепалки...:) Мир?
← →
Ketmar © (2006-08-13 17:53) [15]> [14] DprYg © (13.08.06 17:47)
да фиг с ним. самому стало лениво дальше бодаться. попил пива... %-)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c