MFC如何添加系统消息处理函数?

MFC如何添加系统消息处理函数?,第1张

建立MFC单文档,定义View类的成员变量CButton m_button。

在***View类中添加OnCreate 或OnInitialUpdate 函数,并在函数中加入CRectrect_button(40,10,200,60)   //控制按钮大小、位置 m_button.Create("hello",WS_CHILD|WS_VISIBLE|WS_BORDER,rect_button,this,IDC_DYNAMICBUTTON)

m_button.ShowWindow(SW_SHOWNORMAL)

这样按钮应该都可以显示出来了。

然后添加消息响应函数。头文件中加入afx_msg void OnBtnDown()

BEGIN_MESSAGE_MAP 和  END_MESSAGE_MAP 之间加入ON_BN_CLICKED(IDC_DYNAMICBUTTON,OnBtnDown) 关联按钮变量;

最后加入定义void ***View::OnBtnDown(){ MessageBox("hello","helloworld",MB_OK)

在头文件中声明一个消息相应函数virtual LRESULT OnMyMessage(WPARAM wParaM,LPARAM lParam)

在.cpp文件中将消息 和具体的消息相应函数联系起来ON_BN_CLICKED(WM_MY_MESSAGE,OnMyMessage

实现具体的消息相应函数:LRESULT CMyView::OnMyMessage(WPARAM wParam,LPARAM lParam)。

比如说你在某个界面上要右击菜单,你就先加那个界面的鼠标右键消息响应函数假设叫OnReportRClick()然后你再OnReportRClick()函数里加如下代码:

CMenu menu

VERIFY( menu.LoadMenu( IDR_MENU_XXXXXX ) )

CMenu* popup = menu.GetSubMenu(0)

ASSERT( popup != NULL )

popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this )

这时候右键菜单就能d出来啦。。。你再单独写响应每个选项ID的鼠标左键消息不就行了吗

响应某个菜单项的消息

ON_COMMAND(ID_XXX, &CDlgXXX::OnXXX);//ID_XXX是某个菜单项的ID

动态创建的控件,,可以在对话框的PreTranslateMessage里面进行响应,并执行代码或者执行自定义的响应函数。

在PreTranslateMessage中:

CWnd* pBtn = GetDlgItem(1234)

if(pMsg->hwnd==pBtn.m_hWnd&&pMsg->message==WM_LBUTTONDOWN)

DoYourFunctions()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11594947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存