VC++深入详解(chapter 4)
来源:互联网 发布:sql替换语句 编辑:程序博客网 时间:2024/06/04 18:49
void CChapter4View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_oriPoint = point;
CView::OnLButtonDown(nFlags, point);
}
void CChapter4View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
/*
//一 利用SDK全局函数实现画线功能,
// 1 首先获得窗口的设备描述表
HDC hdc;
hdc = ::GetDC(m_hWnd);
// 2 移动到线条的起点
MoveToEx(hdc,m_oriPoint.x,m_oriPoint.y,NULL);
// 3 画线
LineTo(hdc,point.x,point.y);
// 4 释放设备描述表
::ReleaseDC(m_hWnd,hdc);
// notice 注意全局函数的使用方法
*/
/*
// 二 利用MFC的CDC类实现画线的功能
// 1 获得设备描述表
CDC *pDc = GetDC();
// 2 移动到线条的起点
pDc->MoveTo(m_oriPoint);
// 3 画线
pDc->LineTo(point);
// 4 释放设备描述表
ReleaseDC(pDc);
*/
/*
// 三 利用MFC的CClientDc类实现画线的功能
CClientDC dc(this);
dc.MoveTo(m_oriPoint);
dc.LineTo(point);
// 思考为什么没有用到 GetDc和ReleaseDc 思考这两个函数的作用
// 然后再思考这些东西起作用的时候,与类的构造函数和析构函数的关系
*/
/*
// 如何得到父窗口的指针
CClientDC Dc(GetParent());
Dc.MoveTo(m_oriPoint);
Dc.LineTo(point);
*/
/*
// 四 利用MFC中的CWindowDC类实现画线功能
CWindowDC dc(this);
dc.MoveTo(m_oriPoint);
dc.LineTo(point);
*/
// 在桌面窗口中画线 注意是如何获取桌面窗口的句柄
/*
CWindowDC dc(GetDesktopWindow());
dc.MoveTo(m_oriPoint);
dc.LineTo(point);
*/
/*
在才程序中,当构造一个GDI对象后,该对象并不会立即生效,必须选入设备描述表,他才能在以后的绘制中生效
CPen pen(PS_SOLID,10,RGB(255,0,0));
CClientDC dc(this);
SelectObject()函数可以将GDI对象入选到设备描述表中,并且该函数会返回指向先前被选对象的指针,
这主要是为了在完成绘制操作之后,还原设备表
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo(m_oriPoint);
dc.LineTo(point);
dc.SelectObject(pOldPen);
*/
/*
// 简单画刷
1 创建一个画刷
CBrush brush(RGB(255,0,0));
2 创建一个DC
CClientDC dc(this);
3 将创建的画刷选入到设备描述表中
dc.SelectObject(&brush);
4 利用画刷画出正方形
dc.FillRect(CRect(m_oriPoint,point),&brush);
// 位图画刷
1 创建一个位图对象
CBitmap bitmap;
2 加载位图资源(前提是此资源必须存在)
bitmap.LoadBitmap(IDB_BITMAP1);
3 创建一个位图画刷
CBrush brush(&bitmap);
4 创建一个DC
CClientDC dc(this);
5 将创建之后的位图画刷选入到设备描述表中
dc.SelectObject(&brush);
6 画图
dc.FillRect(CRect(m_oriPoint,point),&brush);
*/
// 透明画刷
/* 1 创建一个DC
CClientDC dc(this);
2 创建一个透明画刷
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
3 将透明画刷选到设备描述表中
CBrush *pOldBrush = dc.SelectObject(pBrush);
4 画正方形
dc.Rectangle(CRect(m_oriPoint,point));
5 还原设备描述表中先前的画刷
dc.SelectObject(pOldBrush);
*/
CView::OnLButtonUp(nFlags, point);
}
Part 2 画曲线
主要思想是响应鼠标移动函数 WM_MOUSEMOVE
注意其中的设计思想
设计一个标记
void CChapter4View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_oriPoint = point;
m_bDraw = TRUE;
CView::OnLButtonDown(nFlags, point);
}
void CChapter4View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_bDraw = FALSE;
CView::OnLButtonUp(nFlags, point);
}
void CChapter4View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
//dc.SetROP2(R2_BLACK);
//根据nDrawMode设置的方式重新设定绘图的方式
CPen pen(PS_SOLID,2,RGB(255,0,0));
CPen *pOldpen = dc.SelectObject(&pen);
if (TRUE == m_bDraw)
{
dc.MoveTo(m_oriPoint);
dc.LineTo(point);
m_oriPoint = point;
}
dc.SelectObject(pOldpen);
CView::OnMouseMove(nFlags, point);
}
- VC++深入详解(chapter 4)
- VC++深入详解(chapter 1)笔记
- VC++深入详解 (chapter 5)
- VC++深入详解·chapter 01·笔记
- VC++深入详解(chapter2)
- VC++深入详解(4):MFC菜单设计
- 孙鑫VC++深入详解(4):文本编程
- 《VC++深入详解》笔记(一)
- VC++深入详解(8):图形绘制
- VC++深入详解(12):网络编程
- VC++深入详解(16):进程通信
- VC++深入详解(18):钩子函数
- 孙鑫VC++(深入详解)视频教程
- 孙鑫VC++深入详解(5):菜单
- 《vc++深入详解》读书笔记
- 看《深入详解VC++》
- 学VC++深入详解
- VC++深入详解第一章
- oracle 添加控制文件和修改归档模式
- html5
- C++ error LNK2005,某变量已经在*.obj文件中定义了 解决方法
- 一维数组与Object
- 在desktop应用中的window中打开另一个网页的代码解决flexpaper在window中不能全屏
- VC++深入详解(chapter 4)
- Linux 下的64位汇编
- SGU 347 字符串
- 共享我的一段录音 - 20110421河南工业大学之漫谈软件测试之道
- 天气基本恢复正常,可以玩了
- 进制转换、负的二进制及类型转换
- 通过FTP实现Internet上MS SQL Server数据库复制-调试问题
- eclpse使用小结
- Linux系统调用的添加