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

11 篇文章 1 订阅
本文介绍如何在MFC应用中处理自定义消息,通过添加WM_KEYDOWN消息处理函数,详细阐述了在CDefMsaDlg类中响应键盘事件的步骤,同时也提及了利用工具箱添加按钮并生成事件响应程序的方法。
摘要由CSDN通过智能技术生成
自定义消息处理:


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


    #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;
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值