全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1908
推到 Plurk!
推到 Facebook!

請教處理 Message 的問題

答題得分者是:ccchen
ericyu
一般會員


發表:2
回覆:18
積分:24
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-21 16:59:21 IP:61.57.xxx.xxx 未訂閱
請教一下各位前輩, 我原本處理 message 的宣告如下:    
type
  TForm1 = class(TForm)
  protected
    procedure WMUser(var message: TMessage); message WM_USER;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
procedure TForm1.WMUser(var message: TMessage);
begin
 
end;
如果我現在須要在 run time 時才決定處理那一個 message, 請問該如何做?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-21 17:08:07 IP:147.8.xxx.xxx 未訂閱
type
  TForm1 = class(TForm)
  protected
    procedure WMUser(var message: TMessage); message WM_USER;
  private
    { Private declarations }
    FProcessMessage: boolean;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
procedure TForm1.WMUser(var message: TMessage);
begin
    if FProcessMessage then begin
    end;
end;
ericyu
一般會員


發表:2
回覆:18
積分:24
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-21 17:24:44 IP:61.57.xxx.xxx 未訂閱
嗯...可能小弟說的不清楚, 小弟的意思是真正要處理的 message 可能是 WM_USER, 可能是 WM_USER n (n 的值要到 run time 時才知道) 當我宣告 procedure WMUser(var message: TMessage); message WM_USER; WMUSer 這裡面只能收到 WM_USER 這個 message, 可是我要收的 message 是要到 run time 才知道, 這該如何處理?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-21 17:46:30 IP:147.8.xxx.xxx 未訂閱
You can only bind a procedure to single message only. BTW, the message number itself is Message.Msg. Use TApplicationEvents.OnMessage or write an handler for TApplication.OnMessage to process all messages. Beware! There are usually LOTS of messages and hence don't do any lengthly processing inside those handlers.
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-22 08:10:59 IP:61.219.xxx.xxx 未訂閱
procedure WMUser(var message: TMessage); message WM_USER; 像你這樣已經指名此procedure處理那一個message,當然只能處理單一message. 你可以直接用windowProc處理所有message
type
  TForm1 = class(TForm)
  protected
    procedure MyWndProc(var message: TMessage);
    ...
  end;
在formCreate時 Windowproc:=MyWndproc;
 
procedure TForm1.MyWndProc(var Message: TMessage);
begin
  case message.Msg of
    wm_user:         wm_user 1:         else //若不是你要處理的message,呼叫 defaultHandle
      wndproc(message);
  end;
end;
ericyu
一般會員


發表:2
回覆:18
積分:24
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-23 16:30:49 IP:61.57.xxx.xxx 未訂閱
謝謝版主, 小弟馬上去試試, 謝謝您了!!
系統時間:2024-04-26 0:09:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!