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

問一個Windows Message的問題

尚未結案
beball
一般會員


發表:7
回覆:4
積分:2
註冊:2004-01-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-26 17:13:33 IP:219.84.xxx.xxx 未訂閱
各位好 我在這邊的討論區找到了一段程式碼如下: 他的目的是讓RichEdit可以自動偵測是否為http的文字.. 我試了,他是可以偵測沒錯,但是HyperLink(TMessage &Msg)這個函式卻似乎沒有任何作用.. 而且我在RichEdit的OnSelectionChange做的事也沒反應了.. 有人知道問題是在哪裡嗎? 終於...我自己試出來了,查了MSDN 原來要建立MESSAGE_MAP 來攔截RichEdit 送出的EN_LINK notification 透過 WM_NOTIFY 的msg 就可取得字串 //unit.h public: void __fastcall HyperLink(TMessage &Msg); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_NOTIFY, TMessage, HyperLink) END_MESSAGE_MAP(TForm) //unit.c __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { SendMessage(RichEdit1->Handle, EM_AUTOURLDETECT, true, NULL); } void __fastcall TForm1::HyperLink(TMessage &Msg) { ENLINK *PENLINK; PENLINK=(ENLINK *)Msg.LParam; if (PENLINK->msg == WM_LBUTTONDOWN && PENLINK->nmhdr.code==EN_LINK) { CHARRANGE RG; RG=PENLINK->chrg; int LStart,LEnd; LStart=RG.cpMin; LEnd=RG.cpMax; RichEdit1->SelStart=LStart; RichEdit1->SelLength=LEnd-LStart; ShowMessage(RichEdit1->SelText); } TForm::Dispatch(&Msg); } void __fastcall TForm1::FormCreate(TObject *Sender) { SendMessage(RichEdit1->Handle, EM_SETEVENTMASK, 0, ENM_LINK); }
系統時間:2024-05-14 11:24:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!