![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Медленная отработка сообщений от мышки ! [D5, Win2k]
AlbertHakimov © (2002-09-23 09:03:00)Помогите разобраться:
рисую кнопку с помощью WinAPI, навешиваю обработчик на клик от мыши. Кнопка то нажимается, но слишком долго приходится ждать отклика.
/////////////////////////////////////////////////////////////////////////////////////
type
TForm1 = class(TForm)
private
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
public
procedure Plot3D(rc:TRect; iArrowUp:Boolean; uFlags:Integer);
procedure TForm1.FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
uFlags : Integer;
rc:TRect;
FrcPlotU :TRect;
implementation
{$R *.DFM}
procedure TForm1.Plot3D(rc:TRect; iArrowUp:Boolean; uFlags:Integer);
begin
With Form1 do begin
DrawFrameControl(GetDC(Handle),rc,DFC_SCROLL,DFCS_SCROLLUP or uFlags);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var FtxtHeight :Integer;
begin
uFlags:=0;
FtxtHeight := canvas.TextHeight("A");
with Form1 do begin
FrcPlotU:= Rect(Width-40,top+FtxtHeight+8,Width-22,top+FTxtHeight+24);
end;
Plot3D(FrcPlotU,iArrowUp,uFlags);
end;
procedure TForm1.WMLButtonUp(var Message: TWMLButtonUp);
begin
Inherited;
if PtInRect(FrcPlotU,Point(Message.XPos,Message.YPos)) then
Plot3d(FrcPlotU,TRUE,0)
end;
procedure TForm1.WMLButtonDown(var Message: TWMLButtonDown);
begin
Inherited;
if PtInRect(FrcPlotU,Point(Message.XPos,Message.YPos)) then
Plot3d(FrcPlotU,TRUE,DFCS_PUSHED)
end;
P.S. Не помагает даже закомментирование Inherited, чтобы удалить все последующие обработчики.
boa (2002-09-23 12:21:00) [1]Пошу прощения, не рпочитал P.S.
Попробуй Message.Result := 1;
Alex4444444444 (2002-09-23 12:16:00) [2]Ya delayu to zhe samoe, no u menya knopka inherits from
TGraphicControl i risovanie idet v OnPaint. Vse rabotaet prekrasno. Edinstvennoe zamechanie: ya ispol"zuyu DFC_SCROLL
dlya togo, chtoby narisovat" knopku vnutri TEdit. U nee
nemnogo drugoe rebro, kak raz dlya TEdit.
boa (2002-09-23 12:14:00) [3]Наверное потому, что сначала обрабатывается inheritedа потом только рисуется кнопка.
AlbertHakimov (2002-09-23 10:56:00) [4]Собственно DrawFrameControl позволяет нарисовать и кнопку, именно нарисовать, а DFC_SCROLL - ну просто нужно было кнопка + стрелочка (указатель направления) вот я и решил использовать DFC_SCROLL вместо DFC_BOTTON.
Суть то не в том что я рисую, а почему так медленно происходит отработка события?
Johnny (2002-09-23 10:02:00) [5]Собственно где кнопка то рисуется? DFC_SCROLL это не кнопка. И рисовать надо в OnPaint.