小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 MikeDoc 2010-12-29

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

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

首先弄清楚兩點(diǎn):(1)誰(shuí)要發(fā)送這個(gè)消息(2)誰(shuí)要接受這個(gè)消息。

用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明。對(duì)象A向B(也可以就是A到A)發(fā)送消息。

1   發(fā)送消息

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

#define    WM_USERMESSAGE    WM_USER+30

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

2   接受消息

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

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

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

afx_msg   LRESULT OnProcName( WPARAM wParam, LPARAM lParam );

對(duì)Win32來(lái)說(shuō),wParam, lParam是傳遞消息最常用的手段。

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

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

ON_MESSAGE(WM_USERMESSAGE, OnProcName)

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

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

 

 

 

開(kāi)始用到自定義消息,找了半個(gè)小時(shí),總結(jié)如下:

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

#define WM_SHOWTASK WM_USER + 101

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

afx_msg void MyMessageProc();

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

ON_MESSAGE(WM_MyMessage,MyMessageProc);

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

4、在類實(shí)現(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)

    {}

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多