//20171/12
1 两点一线 比如鼠标左击和鼠标弹起的两个消息 然后响应从而获取一条线
2 添加响应函数方法 类图->右击->addwindowsmessage
3 Dview和main中同时的添加消息函数 弹出框 发现只会在view类中才会有响应
4 删除通过向导来生成的函数时,方法:函数上面右键 delete
5 双击类名到头文件
6 增加一个响应函数实际上会在三个地方做出补充
 (1)头文件 加入消息函数声明
 (2)源文件中begin_message和end_message之间加入一个消息响应宏 通过宏把消息响应函数关联起来
7 消息映射 基类有虚函数 子类要响应就重写这个函数 子类有调用子类 没有调用父类
 MFC采用消息映射 句柄和指针对照表 当收到消息的时候 通过句柄找到指针 传给
 查看mfc源代码时候 wincore中windowproc f3跟踪查找->windowmessage->根据消息种类判断查找源文件消息映射声明等3个地方 然后由消息函数来响应
8 MFC把作图相关的都放在了cdc中
9 颜色 宏RGB000 黑色 三个255 白色 255 0 0 红色
10 工具栏插入->resourse->Bitmap

 void CTest_DrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
/*采用window SDK方法划线
// TODO: Add your message handler code here and/or call default
HDC hdc;//定义一个句柄
hdc = ::GetDC(m_hWnd);
/*BOOL MoveToEx(
HDC hdc, // handle to device context
int X, // x-coordinate of new current position
int Y, // y-coordinate of new current position
LPPOINT lpPoint // old current position
);*/
//MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);//null大写 //划线
/*BOOL LineTo(
int x,
int y
);
BOOL LineTo(
POINT point
);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);*/ /*CDC *pDC;
pDC = GetDC();//返回值为指针 所以
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);*/ /*//CClientDC 在构造的时候调用getdc获得句柄 析构释放dc句柄 这样不用显示调用
// CWnd* GetParent( ) const;
CClinetDC dc(GetParent());//得到父窗口的指针
CClientDC dc(this);//构造dc
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnLButtonUp(nFlags, point);*/ /*explicit CWindowDC(
CWnd* pWnd
);意味着这个对象可以访问整个屏幕区域 包括客户区域*/ /*CWindowDC 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
//CPen pen(PS_SOLID,10,RGB(255,0,0));//红色 实线
/*CPen pen(PS_DOT,1,RGB(255,0,0));//点线 为1
CClientDC dc(this);
//新的设备描述表 来覆盖前面的DC 也是还原
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);
CView::OnLButtonUp(nFlags, point);*/ //画刷
//CBrush brush(RGB(255,0,0));
/*CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);//加载位图
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));
//dc.Rectangle(CRect(m_ptOrigin,point));//画矩形 此时是重叠的
CBrush *pOldBrush = dc.SelectObject(pBrush);//替换
CView::OnLButtonUp(nFlags, point);
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush);//还原先前的画刷
CView::OnLButtonUp(nFlags, point); }

MFC绘图的更多相关文章

  1. 【MFC】MFC绘图不闪烁——双缓冲技术

    MFC绘图不闪烁——双缓冲技术[转] 2010-04-30 09:33:33|  分类: VC|举报|字号 订阅 [转自:http://blog.163.com/yuanlong_zheng@126/ ...

  2. MFC绘图(转载)

    http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结 ...

  3. 【转】OPenGL MFC绘图

    一.简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC&q ...

  4. MFC绘图相关GDI工具对象和函数介绍

    在利用MFC进行界面编程时,除了需要熟悉各种类型控件的操作外,还会经常遇到图形绘制和显示的问题,比如时频分析界面.图像处理界面等.处理这些软件界面开发问题时,不可避免地需要用到一系列GDI工具对象和相 ...

  5. MFC绘图基础

    ·MFC中三种坐标系统: 1.屏幕坐标系 坐标原点位于屏幕左上角 2.(非客户区)窗口坐标系 坐标原点位于窗口左上角(包括标题栏) 3.客户区坐标系 坐标原点位于客户区左上角(不包括标题栏) ·坐标系 ...

  6. MFC绘图小实验(1)

    这学期开了一门计算机图形学的课程,感觉蛮有趣的,所以想把书上的那些样例程序都实现一遍,了解基本的绘图原理和要点. 1,使用用户自定义的映射模式,设置窗口大小和视区相等的二维坐标系.视区中x轴水平向右为 ...

  7. MFC绘图基础——上机操作步骤

    一.上机之前的介绍 软件环境:VC++6.0 目的:熟悉基本的MFC框架搭建和了解界面 二.MFC上机操作步骤 1,在Windows桌面上运行VC++6.0. 2,新建项目工程文件. 3,在MFC 应 ...

  8. MFC绘图小实验(3)

    1,使用默认的文本背景模式,在点(-200,20)处输出黄底红字“Computer Graphics Based on VC++”;在(50,20)处输出黄底红字“BoChuang Research ...

  9. MFC绘图小实验(2)

    1,以正五边形的5个顶点为基础,隔点存储构成五角星.填充模式采用WINDING.五角星边界线为5个像素宽的蓝色实线,内部使用红色填充. CRect rect; //定义矩形 GetClientRect ...

随机推荐

  1. 匈牙利游戏(codevs 1269)

    题目描述 Description Welcome to the Hungary Games! The streets of Budapest form a twisted network of one ...

  2. linux命令2——进程相关

    (1)ps  -ef :可以看到内核的线程.

  3. MySQL性能优化的21个最佳实践 和 mysql使用索引【转载】

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...

  4. MongoDB基本管理命令操作

    1. 查看所有数据库: show dbs 或: show databases 注意: 该命令不会显示新创建的空数据库,若想显示需要向空数据库插入一些数据. MongoDB中默认的数据库为test,若果 ...

  5. SGU 194 无源无汇可行流求解

    题意:n个点,m条边,每条边有容量限制 l--c,每个点满足容量平衡(流入等于流出),求可行解 无源无汇可行流问题,建立以一个超级源点和超级汇点,由于原来最大流问题时候,流量下界其实为0, 所以要转化 ...

  6. 【Java源码】集合类-优先队列PriorityQueue

    一.类继承关系 public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serial ...

  7. Two Sum(hashtable)

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  8. IOCP实现的任务队列

    unit IOCPQueue; interface uses windows, classes; type TOnQueueProc = procedure(sender: tobject; Para ...

  9. 下一代的中间件必须是支持docker规范的

    下一代的中间件必须是支持docker规范的,这是中间件技术走向标准规范化的必经之路. 什么是 Docker? 答案是:Docker 是下一代的云计算模式.Docker 是下一代云计算的主流趋势. Do ...

  10. kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...