MFC自定义消息 笔者的尝试版本

自定义消息处理:


在视类头文件中定义用户消息:


    #if _MSC_VER > 1000


#pragma once


const int WM_USERMSG=WM_USER+100; //定义用户消息


#endif // _MSC_VER > 1000


在视类头文件中声名用户消息:


protected:


    //{{AFX_MSG(CXiaoXiView)


    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);


    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);


    afx_msg void OnMouseMove(UINT nFlags, CPoint point);


    afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);


    afx_msg void OnDestroy();


    afx_msg void OnTimer(UINT nIDEvent);


    afx_msg LRESULT OnMyFunction(WPARAM wParam,LPARAM lParam);



    afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);    //声名消息响应函数


    //}}AFX_MSG


    DECLARE_MESSAGE_MAP()


 


在视类源文件中添加消息映射声明:


BEGIN_MESSAGE_MAP(CXiaoXiView, CView)


    //{{AFX_MSG_MAP(CXiaoXiView)


    ON_WM_LBUTTONDOWN()


    ON_WM_LBUTTONUP()


    ON_WM_MOUSEMOVE()


    ON_WM_CHAR()


    ON_WM_DESTROY()


    ON_WM_TIMER()


    ON_MESSAGE(WM_USERMSG,OnMyFunction) //添加消息映射声明



    ON_WM_KEYDOWN()


    //}}AFX_MSG_MAP


    // Standard printing commands


    ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)


    ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)


    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)


END_MESSAGE_MAP()


 


定义用户消息响应函数:


在源文件中直接输入以下代码:


LRESULT CXiaoXiView::OnMyFunction(WPARAM wParam,LPARAM lParam)


{


    AfxMessageBox("恭喜你,消息发送成功!");
//如果前者参数有问题,改成MessageBox("恭喜你,消息发送成功!"); 另外,项目->属性->常规->字符集->多字节字符集解决乱码或者其他之类问题

    return NULL;

}




编写程序代码处理消息,添加WM_KEYDOWN消息处理函数,写上程序

void CDefMsaDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{

HWND hwnd=GetSafeHwnd();
MessageBox((LPCTSTR)"恭喜你,消息发送成功!");
if(nChar==VK_DOWN)
{
::PostMessage(hwnd,WM_USERMSG,0,0);
return;
}

}


或用工具箱,添加一个按钮,右击添加事件响应程序。然后在响应程序里面添加


void CDefMsaDlg::OnBnClickedButton1()
{
HWND hwnd=GetSafeHwnd();
// TODO: 在此添加控件通知处理程序代码
::PostMessage(hwnd,WM_USERMSG,0,0);
return;
}

 

你可能感兴趣的:(C++,mfc,自定义消息)