Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Медленная отработка сообщений от мышки ! [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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо