Posted on 2012-09-28 16:08
盛胜 阅读(342)
评论(0) 编辑 收藏 引用 所属分类:
vc++深入详解
建立工程文件
选择单文档其他全部默认
添加LButtonDown和LButtonUp的消息响应函数
点击上边的 查看(v)->建立类向导
这里已经点击过Add Funtion ,点击后工程自动添加消息函数。点击edit code可以进行代码编辑。
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_ptOrigin=point;
//MessageBox("view Clicked!");
CView::OnLButtonDown(nFlags, point);
}
同理OnLButtonUp消息函数也一样添加,代码为下边:
void CTestView::OnLButtonUp(UINT nFlags, CPoint point)
{
//1
/*
// TODO: Add your message handler code here and/or call default
//首先获取窗口的设备描述表
HDC hdc;
//m_hWnd是CWnd的一个成员变量用来保存窗口句柄,而CTestView派生于CWnd类。GetDC全局函数获取得当前窗口的设备描述表
hdc = ::GetDC(m_hWnd);
//移动到线条的起点
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
//画线
LineTo(hdc,point.x,point.y);
//释放设备描述表
::ReleaseDC(m_hWnd,hdc);
*/
//CWnd类提供了成员函数GetDC和ReleaseDC,先利用Platform SDK函数实现画线功能时,这两个函数前面都加::表示全局
//函数
//2
/*
//MFC封装了CDC类(一个设备描述表)
CDC* pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
*/
//3
/*
//CClientDC派生于CDC类,构造时自动调用GetDC函数。一旦定义了CClientDC的一个对象就不用再调用GetDC和ReleaseDC
//CClientDC dc(this);
CClientDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
*/
//4
//CwindowDC的优势:对象可以访问整个窗口区域
//CWindowDC dc(this);
CWindowDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
}