Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизИзменение размеров Найти похожие ветки
← →
P.N.P. © (2004-06-27 20:54) [0]При посылке сообщения
SendMessage(MyComp.Handle,WM_SYSCOMMAND,SC_SIZE,0);
Компонент переходит в стандартный для Windows режим
изменения размера, однако для указания - какой
именно параметр (Width, Height) надо изменять необходимо
нажать на клавиатуре соответствующую клавишу со стрелкой.
В принципе это нормально, НО мне нужно, что бы пользователь
наведя курсор мыши на границу компонента
и нажав левую кнопку сразу же мог изменять размеры.
Я сейчас застрял на том, как же отправить сообщение о нажатии
соответствующей клавиши компоненту (или кому?), т.к.
сообщения о нажатии
(например keybd_event(VK_DOWN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
или SendMessage(MyComp.Handle,WM_KEYDOWN,VK_DOWN,0);)
обрабатываются после того, как компонент
выходит из режима изменения размера.
Подскажите пожалуйста, как быть в этом случае?
← →
KilkennyCat © (2004-06-27 22:43) [1]procedure TForm1.Edit1MouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
pt : TPoint;
begin
if ssCtrl in Shift then begin
ReleaseCapture;
SendMessage(Edit1.Handle, WM_SYSCOMMAND, $F012, 0);
GetCursorPos(pt);
end;
end;
Вот ежели перебрать вместо $F012 другие значения, то можно и размеры поменять, или превратить едит в каптион ($F020)
← →
KilkennyCat © (2004-06-27 22:45) [2]$F008 - изменение размеров
← →
KilkennyCat © (2004-06-27 22:47) [3]точнее
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in Shift then begin
ReleaseCapture;
SendMessage(Edit1.Handle, WM_SYSCOMMAND, $F008, 0);
end;
end;
← →
P.N.P. © (2004-06-27 23:16) [4]Спасибо, то, что надо
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c