一、新建mfc项目
mfc应用程序
应用程序类型:单个文档
项目类型:MFC标准
完成
二、添加标准消息
1、头文件函数声明
public:
afx_msg void OnLButtonDown(UINT uflag,CPoint point);
2、源文件函数实现
void CMy21View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
::MessageBox(NULL,L”aaaa”,L”提示”,MB_OK);
CView::OnLButtonDown(nFlags, point);
}
3、消息映射表添加消息类型
ON_WM_LBUTTONDOWN()
三、三种函数:
//::MessageBox(NULL,L”bbbb”,L”提示”,MB_OK); //WindowsApi
//this->MessageBox(L”bbbb”); //MFC类的成员函数
//AfxMessageBox(L”bbbb”); //MFC全局函数
四、TRACE输出
类似于printf,使用格式完全相同
五、命令消息(菜单栏和工具栏和快捷键消息)
菜单栏和快捷键可以通过向导:
右键
添加事件处理程序
工具栏如果添加消息:
MainFrm.h添加声明:
afx_msg void OnToolBar();
MainFrm.cpp添加实现和消息映射:
void CMainFrame::OnToolBar()
{
TRACE(“工具栏\n”);
}ON_COMMAND(ID_BUTTON32772,&CMainFrame::OnToolBar)
如果有警告,则可能是没有写左下角的提示,在属性上面可以添加
六、自定义消息(实现在视图界面点击发送消息给frame)
1、添加LButtonDown消息(右键属性添加)
2、在stdafx.h里面定义宏
#define UM_VIEW_TO_FRAME WM_USER+1
3、在LButtonDown中添加
::SendMessage(AfxGetApp()->m_pMainWnd->m_hWnd,UM_VIEW_TO_FRAME,0,0);
4、声明并定义自定义函数
afx_msg LRESULT ONVIEWTOFRAME(WPARAM wParam, LPARAM lParam);
LRESULT CMainFrame::ONVIEWTOFRAME(WPARAM wParam, LPARAM lParam)
{
TRACE(“CMainFrame::ONVIEWTOFRAME\n”);
return 0;
}
5、完善消息映射
ON_MESSAGE(UM_VIEW_TO_FRAME,CMainFrame::ONVIEWTOFRAME)
6、在LButtonDown中添加
TRACE(“CMy21View::OnLButtonDown\n”);
在frame的消息发送到view
1、添加命令消息(右键添加事件处理程序)
2、在stdafx.h里面定义宏
#define UM_FRAME_TO_VIEW WM_USER+2
3、在On32773中添加(这个和之前的很不一样)
this->GetActiveView()->SendMessage(UM_FRAME_TO_VIEW);
4、声明并定义自定义函数
afx_msg LRESULT ONFRAMETOVIEW(WPARAM wParam, LPARAM lParam);
LRESULT CMy21View::ONFRAMETOVIEW(WPARAM wParam, LPARAM lParam)
{
TRACE(“CMy21View::ONFRAMETOVIEW\n”);
return 0;
}
5、完善消息映射
ON_MESSAGE(UM_FRAME_TO_VIEW,CMy21View::ONFRAMETOVIEW)
6、在On32773中添加
TRACE(“CMainFrame::On32773\n”);
七、自定义消息传参
::SendMessage(AfxGetApp()->m_pMainWnd->m_hWnd,UM_VIEW_TO_FRAME,point.x,point.y);
传到了wParam和lParam上可以获取鼠标的横纵坐标