1. HDC
HDC是指窗体,控件的句柄,是长整类型.
这是windows编程里很重要的一个类型,它唯一标识了一个对象.比如窗口,按钮,视图等,也就是一个代号.
另外它和C++没有什么直接的关系,HDC是windows系统API中定义的一个数据类型.
注意,GetDC()得到的句柄必须用ReleaseDC()函数释放!而用Create建立的句柄必须用DeleteDC()释放.
2. BOOL MoveToEx(HDC hdc, int x,int y,LPPOINT lppt).
hdc是当前设备的句柄.
x是X轴的位置,水平方向,一般原点是在屏幕左上角的位置.
y是Y轴的位置,垂直方向.
lppt是移动前的坐标位置.
3.BOOL WINAPI LineTo(HDC hdc, int x, int y);
hdc是当前设备的句柄.
x是X轴的位置,水平方向,一般原点是在屏幕左上角的位置.
y是Y轴的位置,垂直方向.
// CDrawView 消息处理程序
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_ptOrigin=point;
CView::OnLButtonDown(nFlags, point);
}
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
/**//*********************************************
HDC hdc;
hdc=::GetDC(m_hWnd);
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);
CView::OnLButtonUp(nFlags, point);
**********************************************/
/**//*********************************************
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);
CView::OnLButtonUp(nFlags, point);
**********************************************/
/**//*********************************************
CClientDC dc(this);
//CClientDC dc(GetParent());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
**********************************************/
/**//*********************************************
CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);
**********************************************/
/**//*********************************************
CPen pen(PS_DOT,1,RGB(20,255,0));
CClientDC dc(this);
//把画笔选入设备描述表
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);
CView::OnLButtonUp(nFlags, point);
**********************************************/
/**//*********************************************
CBitmap bitmap;
bitmap.LoadMappedBitmap(IDR_AA1);
CBrush brush(&bitmap);
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
CView::OnLButtonUp(nFlags, point);
**********************************************/
CClientDC dc(this);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush *pOldBrush=dc.SelectObject(pBrush);
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush);
CView::OnLButtonUp(nFlags, point);
}