線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2218
推到 Plurk!
推到 Facebook!

SendMassage 送出的訊息沒收到?

答題得分者是:Clarinet
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-03 15:56:21 IP:61.219.xxx.xxx 未訂閱
參考下面小弟做了個迷你的版本測試 Thread
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=85907
完整程式在附件, TForm1.WMCHANGE 永遠沒執行到, 為什麼?
Unit1.pas 中
<textarea class="delphi" rows="10" cols="60" name="code"> type procedure WMCHANGE(var Msg: TMessage); procedure TForm1.FormCreate(Sender: TObject); begin t1:= TtestThread.Create(true); t1.P1:='t1'; t1.Resume; end; procedure TForm1.WMCHANGE(var Msg: TMessage); begin Memo1.Lines.Add(t1.P1); // 永遠沒執行到, 為什麼? end; Unit2.pas 中 const WM_CHANGE = WM_USER 1973; procedure TtestThread.Execute; begin SendMessage(Wnd, WM_CHANGE, wParam(P1), lParam(P1)); end; </textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
附加檔案:459b61a5c3f06_t.zip
Clarinet
高階會員


發表:9
回覆:97
積分:126
註冊:2002-05-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-04 09:35:48 IP:220.228.xxx.xxx 訂閱
在訊息宣告的部份,你宣告錯了
如下才是正確的:
procedure WMCHANGE(var Msg: TMessage); message WM_CHANGE;
------
GPS(全球衛星定位系統)
http://www.allgps.com
Clarinet
高階會員


發表:9
回覆:97
積分:126
註冊:2002-05-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-04 09:36:30 IP:220.228.xxx.xxx 訂閱
在訊息宣告的部份,你宣告錯了
如下才是正確的:
procedure WMCHANGE(var Msg: TMessage); message WM_CHANGE;
------
GPS(全球衛星定位系統)
http://www.allgps.com
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-04 12:06:06 IP:210.241.xxx.xxx 未訂閱
有辦法在 TForm1.WMCHANGE 中收好幾種訊息嗎 ?
(然後根據不同訊息做不同事情)
下面宣告好像行不通
procedure WMCHANGE(var Msg: TMessage); message WM_CHANGE; message WM_CHANGE2;
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
yowlc
一般會員


發表:1
回覆:5
積分:6
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-05 11:30:43 IP:203.72.xxx.xxx 訂閱
1. 一樣使用 procedure WMCHANGE(var Msg: TMessage); message WM_CHANGE;

2. 在 SendMessage 的時候, 利用 WParam 和 LParam 來判斷資料, 如
SendMessage(Wnd, WM_CHANGE, 1, LParam(P1));
SendMessage(Wnd, WM_CHANGE, 2, LParam(P1));

3. 在程式裡面判斷
Procedure Tform1.WMCHANGE(var Msg: Tmessage);
Begin
If Msg.Wparam = 1 then
Begin
///////////////////
End else
If Msg.Wparam = 2 then
Begin
///////////////////
End;
End;

===================引 用 文 章===================

有辦法在 TForm1.WMCHANGE 中收好幾種訊息嗎 ?
(然後根據不同訊息做不同事情)

下面宣告好像行不通
procedure WMCHANGE(var Msg: TMessage); message WM_CHANGE; message WM_CHANGE2;

系統時間:2024-04-24 2:10:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!