日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

vc6.0添加自定義用戶消息的基本過程

 MikeDoc 2010-12-29

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=16276

在學(xué)習(xí)<vc6.0技術(shù)內(nèi)幕>過程中遇到要添加用戶自定義消息的過程.我覺得書上寫的比較散,于是就自己總結(jié)了這個基本過程,以為日后備查.

首先弄清楚兩點:(1)誰要發(fā)送這個消息(2)誰要接受這個消息。

用一個簡單的例子來說明。對象A向B(也可以就是A到A)發(fā)送消息。

1   發(fā)送消息

首先在A的頭文件中定義這個消息:

#define    WM_USERMESSAGE    WM_USER+30

所有自定義消息都是以WM_USER消息為基礎(chǔ)加上一個任意的自然數(shù)來表示的。A是向外發(fā)送消息的對象,因此在A的某個方法(函數(shù))里就會調(diào)用用來發(fā)消息的函數(shù)B::SendMessage()/B::PostMessage(),因為是B接受消息,因此是如上的形式。

2   接受消息

對象接受一個消息,應(yīng)該有三部分:在頭文件中有該消息的處理函數(shù)的原型;在實現(xiàn)文件中有接受消息映射的宏; 以及該消息的處理函數(shù)的具體實現(xiàn)。

2.1   頭文件中加上自定義消息的處理函數(shù)原型

在DECLARE_MESSAGE_MAP()語句之前,一對AFX_MSG之間加上如下形式的函數(shù)原型:

afx_msg   LRESULT OnProcName( WPARAM wParam, LPARAM lParam );

對Win32來說,wParam, lParam是傳遞消息最常用的手段。

2.2   在實現(xiàn)文件中加上接受消息映射的宏

在cpp文件里,BEGIN_MESSAGE_MAP語句之后,在一對AFX_MSG_MAP之間,增加 如下形式的代碼:

ON_MESSAGE(WM_USERMESSAGE, OnProcName)

上面是不用分號結(jié)尾的。

2.3   在實現(xiàn)文件中給出消息處理函數(shù)的具體實現(xiàn)。

 

 

 

開始用到自定義消息,找了半個小時,總結(jié)如下:

1、首先在用戶類中聲明自定義消息WM_SHOWTASK(當(dāng)然可以為其他):

#define WM_SHOWTASK WM_USER + 101

2、然后在類成員聲明中聲明消息處理函數(shù)

afx_msg void MyMessageProc();

3、在類實現(xiàn)文件中添加消息映射宏

ON_MESSAGE(WM_MyMessage,MyMessageProc);

(如果用戶需要一個整個系統(tǒng)唯一的消息,可以調(diào)用 SDK 函數(shù) RegisterWindowMessage 并使用 ON_REGISTER_MESSAGE 宏指令取代 ON_MESSAGE 宏指令,其余步驟同上。)

4、在類實現(xiàn)文件中添加消息處理函數(shù)

LRESULT CMyDlg::MyMessageProc()

 

首先定義消息:例如 define WM_MYMESSAGE (WM_USER+100)

在.H文件中,加入消息響應(yīng)函數(shù),如:

        LONG OnMyMessage(WPARAM w,LPARAM l);

    該函數(shù)有規(guī)定的格式:

        LONG Function_Name(WPARAM w,LPARAM l);

加入消息響應(yīng)宏,在響應(yīng)該消息的類中,在消息響應(yīng)塊中,

    成為如下樣式:

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

        //{{AFX_MSG_MAP(CAboutDlg)

        ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)

        //}}AFX_MSG_MAP

    END_MESSAGE_MAP()

在.CPP文件中,編輯消息響應(yīng)函數(shù),如下:

    LONG CMyClass::OnMyMessage(WPARAM w,LPARAM l)

    {}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多