//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. bit manipulation

    WIKI Bit manipulation is the act of algorithmically manipulating bits or other pieces of data shorte ...

  2. POJ 1470 Closest Common Ancestors【LCA Tarjan】

    题目链接: http://poj.org/problem?id=1470 题意: 给定若干有向边,构成有根数,给定若干查询,求每个查询的结点的LCA出现次数. 分析: 还是很裸的tarjan的LCA. ...

  3. Populating Next Right Pointers in Each Node (DFS,没想到)

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  4. AtCoder Regular Contest 091&092

    091E(构造) 题意: 给出n,a,b.你需要构造出一个长度为n的n的排列,其中最长上升子序列的长度为a,最长下降子序列的长度为b. n,a,,b<=3e5 分析: 我们可以构造出这样的数列, ...

  5. 105. Construct Binary Tree from Inorder and preorder Traversal

    /* * 105. Construct Binary Tree from Inorder and preorder Traversal * 11.20 By Mingyang * 千万不要以为root ...

  6. idea、jdk、eclispe中空main方法的线程数量不一样,why?

    測试代码: public class Test {     public static void main(String[] args) {         System.out.println(Th ...

  7. OCR简介及使用

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...

  8. curl的使用(from 阮一峰)

    1.   http://www.ruanyifeng.com/blog/2011/09/curl.html 2.   https://curl.haxx.se/docs/httpscripting.h ...

  9. Visual Studio VS如何修改代码字体

    工具-选项-环境-字体和颜色

  10. Windows——cmd findstr 字符串查找增强使用说明

    在文件中寻找字符串. 复制代码代码如下: FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [ ...