MFC自定義消息

使用過程

消息傳遞過程中參與的對象
1. 消息響應窗體A
2. 消息發送窗體B
消息傳遞過程:
1. 自定義消息ID,用戶自定義消息通常定義在WM_USER(0x0400)至0x7FFF範圍內。

#define WM_TASK_UPDATE WM_USER + 123

2. 在窗體A中聲明定義消息響應函數,該函數的類型必須是固定的:afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)

afx_msg LRESULT OnTaskUpdate(WPARAM wParam,LPARAM lParam);//聲明
LRESULT CPropertiesWnd::OnTaskUpdate(WPARAM wParam,LPARAM lParam)//定義
{
    TaskInfo* info = (TaskInfo*)wParam;//消息攜帶的數據對象
    SetTaskInfo(info);
    return S_OK;
}

3. 在窗體A中聲明一個自定義消息映射宏:ON_MESSAGE(message, memberFxn ) ,其中message是消息的ID,memberFxn是映射message的消息響應函數。

ON_MESSAGE(WM_TASK_UPDATE,&CPropertiesWnd::OnTaskUpdate)

4. 在窗體B中聲明一個窗口句柄對象並定義一個設置窗口句柄對象的函數。用來獲取本窗體的窗口句柄。

HWND              m_hPropWnd;         //聲明窗口句柄對象
void CFileView::setPropHwnd(HWND hWnd)//定義設置窗口句柄對象函數
{
    m_hPropWnd = hWnd;
}

5. 在主窗體的OnCreate函數中獲取B窗體的窗口句柄

m_wndFileView.setPropHwnd(m_wndProperties.GetSafeHwnd());

6. 窗體B中發送消息

::SendMessage(m_hPropWnd,WM_TASK_UPDATE,(WPARAM)task,0);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章