VC6添加自訂訊息(主視窗向子視窗發送訊息)

來源:互聯網
上載者:User

從主視窗向子視窗發送訊息,可以在子視窗中添加自訂的訊息,然後在主視窗中需要地方呼叫該訊息。

來電者法:

1.將子視窗添加為主視窗的成員變數;

2.主視窗呼叫該訊息,成員變數名.SendMessage(UM_PROGRESS);

 

子視窗添加自訂訊息步驟如下:

     1、定義訊息。

      在Windows中,所有的訊息都用一個特定的整數值來表示,為了避免自訂訊息與已存在的其他訊息發生衝突,應該利用Windows提供的一個常量:WM_USER,小於這個常量的是系統保留的。即使用者自訂的訊息至少為WM_USER+1,注意最後表示的訊息的數值不要超過0x7FFF。在開發Windows95應用程式時,Microsoft推薦使用者自訂訊息至少是WM_USER+100,因為很多新控制項也要使用WM_USER訊息。

#define UM_PROGRESS WM_USER + 100

 將上句添加到子視窗類的標頭檔(.h)中。

2、在子視窗類標頭檔的AFX_MSG塊中聲明訊息處理函數:

class CMainFrame:public CFrameWnd{

protected:

//{{AFX_MSG(CMainFrame)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnTimer(UINT nIDEvent);

afx_msg LRESULT OnProgress(WPARAM wParam, LPARAM lParam);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

3、在子視窗類的實現檔案(.cpp)中,使用ON_MESSAGE巨集指令將訊息映射到訊息處理表中。

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

ON_WM_TIMER()

ON_MESSAGE(UM_PROGRESS, OnProgress)//注意這條語句的後面沒有分號

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

4、實現訊息處理函數。該函數使用WPRAM和LPARAM參數並返回LPESULT。

LRESULT CMainFrame::OnProgress(WPARAM wParam,LPARAM lParam){

CRect rect;

m_wndStatusBar.GetItemRect(2,&rect); //獲得窗格地區

//建立進度列,注意第三個參數為CWnd* pParentWnd,根據情況選擇父表單

m_progress.Create(WS_CHILD|WS_VISIBLE|PBS_VERTICAL,rect,this,123);

m_progress.SetPos(50);

return 0;

}

5、在適當的時候發送自訂訊息,進行訊息處理。需要注意使用SendMessage還是PostMessage進行處理:SendMessage是訊息處理完畢後再返回;而PostMessage則是把訊息放到訊息佇列後立即返回。

SendMessage(UM_PROGRESS);

PostMessage(UM_PROGRESS);

如果使用者需要整個系統唯一的訊息,可以調用SDK函數RegisterWindowMessage並使用ON_REGISTER_MESSAGE巨集指令取代ON_MESSAGE巨集指令,其餘步驟同上。

 

轉自:http://blog.sina.com.cn/s/blog_6bd15b910100nc00.html

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.