Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Медленная отработка сообщений от мышки !   Найти похожие ветки 

 
AlbertHakimov   (2002-09-23 09:03) [0]

Помогите разобраться:
рисую кнопку с помощью 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, чтобы удалить все последующие обработчики.


 
Johnny   (2002-09-23 10:02) [1]

Собственно где кнопка то рисуется? DFC_SCROLL это не кнопка. И рисовать надо в OnPaint.


 
AlbertHakimov   (2002-09-23 10:56) [2]

Собственно DrawFrameControl позволяет нарисовать и кнопку, именно нарисовать, а DFC_SCROLL - ну просто нужно было кнопка + стрелочка (указатель направления) вот я и решил использовать DFC_SCROLL вместо DFC_BOTTON.

Суть то не в том что я рисую, а почему так медленно происходит отработка события?


 
boa ©   (2002-09-23 12:14) [3]

Наверное потому, что сначала обрабатывается inherited а потом только рисуется кнопка.


 
Alex4444444444   (2002-09-23 12:16) [4]

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:21) [5]

Пошу прощения, не рпочитал P.S.
Попробуй Message.Result := 1;



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
1-8052
Metotrone
2002-09-22 18:59
2002.10.03
Работа со Strings


7-8192
sergant33
2002-07-26 15:54
2002.10.03
Как запускать прогу?


6-8091
DeXTeR
2002-08-02 17:15
2002.10.03
Dial-Up


8-8073
Янушка
2002-05-31 10:35
2002.10.03
СРОЧНО!!!Как изменить цвет у заголовка окна формы?


1-8039
novarm44
2002-09-22 03:06
2002.10.03
Доступ к тексту HTML в TWebBrowser