使用软件 visual studio 2005
要在程序中划线,需要知道鼠标左键按下时的和松开时鼠标的起始坐标。
1.创建单文档MFC应用程序。
2.先以增加一个BUTTON按钮控件为例,说明下添加消息响应的过程。
类视图--右键点击CMainFrame--属性
右侧可以看到:
点击--消息--找到 WM_LBUTTONDOWN--添加。
添加代码:
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MessageBox("MainFrame点击")
CFrameWnd::OnLButtonDown(nFlags, point);
}
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MessageBox("MainFrame点击")
CFrameWnd::OnLButtonDown(nFlags, point);
}
同样的,在CDrawView类添加这个消息
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MessageBox("VIEW点击");
CView::OnLButtonDown(nFlags, point);
}
这时,按下F7,可能会发现无法编译。(如果是C2664错误,解决方法是: 项目菜单--项目属性(最后一个)--配置属性--常规--项目默认值--字符集,将使用Unicode字符集改为未设置即可)
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MessageBox("VIEW点击");
CView::OnLButtonDown(nFlags, point);
}
这时,按下F7,可能会发现无法编译。(如果是C2664错误,解决方法是: 项目菜单--项目属性(最后一个)--配置属性--常规--项目默认值--字符集,将使用Unicode字符集改为未设置即可)
编译成功后,按下F5,运行,单击窗口界面,发现是弹出窗口:“VIEW点击”而不是“MainFrame点击”。(MainFrame类是地面,VIEW类是地板,VIEW类覆盖在MainFrame类之上,所以“单击”只对VIEW有效)
CMainFrame::OnLButtonDown不需要了,删除这个消息的话,类视图--右键点击CMainFrame--属性--点击--消息--找到 WM_LBUTTONDOWN--删除。(因为多处地方已经自动生成了代码)
OnLButtonDown中的一个参数CPoint point,就记录了鼠标左键按下时的坐标,我们要记录它。
方法:右键点击-CDrawView--添加--变量