//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. [USACO13NOV]空荡荡的摊位Empty Stalls

    题目描述 Farmer John's new barn consists of a huge circle of N stalls (2 <= N <= 3,000,000), numbe ...

  2. 洛谷 P 1018 乘积最大 ==Codevs

    题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...

  3. yum安装LAMP环境与管理

    yum安装LAMP环境与管理 参考:http://www.zixue.it/ yum添加163源 地址: http://mirrors.163.com/.help/centos.html 下载方式: ...

  4. php之memcache学习

    php之memcache学习 简介: memcache是一个分布式高速缓存系统. 分布式是说可以部署在多台服务器上,实现集群效果: 高速是因为数据都是维护在内存中的: 特点和使用场景: 1.非持久化存 ...

  5. [Bzoj1297][Scoi2009 ]迷路 (矩阵乘法 + 拆点)

    1297: [SCOI2009]迷路 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1385  Solved: 993[Submit][Status] ...

  6. Linux终端Shell下的常用快捷键收集

    删除 [Ctrl]+[D]删除光标所在位置上的字符相当于VIM里x或者dl [Ctrl]+[H]删除光标所在位置前的字符相当于VIM里hx或者dh [Ctrl]+[K]删除光标后面所有字符相当于VIM ...

  7. 打开input输入的时候,css中position:absolute/fixed定位的时候,定位元素上移问题解决

    1.异常代码 <style> .box{ min-height: 100vh; width: 100%; position: relative; } .position{ position ...

  8. Centos7 Samba 独立账户

    创建了一个组:smbgrp 和用户srijan通过认证来访问Samba服务器. groupadd smbgrp useradd srijan -G smbgrp smbpasswd -a srijan ...

  9. Prime Distance(二次筛素数)

    Description The branch of mathematics called number theory is about properties of numbers. One of th ...

  10. android KE or NE分析

    使用arm-eabi-addr2line工具跟踪Android调用堆栈 在通常的C/C++代码中,可以通过响应对内存操作不当引起的Segmentation Fault错误即信号SIGSEGV(11)做 ...