3. 绘图

3.1 对话框资源编辑

  首先通过添加控件的方式来创建一个简单的绘图对话框如图所示,创建步骤为:

第一、在VC++6.0软件环境的灰色空白区域右击,选中Controls,然后会弹出一个控件对话框;

第二、点击需要的控件,鼠标箭头类型就会变成十字形,然后在主对话框里通过点击、拖拽绘制出需要的控件,这里也可以通过鼠标调整控件大小直到满意为止。

第三、在主对话框里右击打开属性对话框(一般情况下可以点击属性对话框左上角的形如大头针样式的小按钮来锁定属性对话框,解锁也是点击同样的按钮,只是按钮样式会变),然后选中控件,属性对话框也相应地显示该控件的属性。在控件属性对话框里来修改控件的标题、类型、ID等。

总之,以后在创建对话框工程时,就这样按部就班地先编辑主对话框资源,修改主对话框的属性(ID、大小、类型等)及其中控件的标题、类型、大小、ID等属性。

3.2 消息关联(使用画笔)

  接下来就是为对话框进行消息关联,比如图3.1中,在运行对话框程序后,通过鼠标左键点击画图按钮,系统能响应按钮控件的鼠标左击消息,然后能在静态文本控件区域绘制一条红色直线。

  第一、如何为画图按钮控件关联消息?简单的方法是仍然停留在刚才资源编辑状态,通过双击画图按钮控件,然后会弹出如图3.2的一个增加成员函数编辑框。输入函数名称,点击确定,系统就将按钮控件和该成员函数关联起来。

  另一种方法就是通过类向导(MFC Class Wizard)进行控件与消息响应函数的关联,如图3.3所示:

  当把ID句柄为IDB_DROW的画图按钮控件和OnDrow()成员函数关联起来后,系统就生成如下代码:

void CFDlg::OnDrow()
{
// TODO: Add your control notification handler code here
}

  此时运行程序后点击画图按钮,那么系统就响应上述函数。因此想在静态文本区域绘制一条红色直线,就是在OnDrow()函数体内进行编辑绘图代码,示例代码如下:

void CFDlg::OnDrow()
{
// TODO: Add your control notification handler code here
CWnd* mywnd = GetDlgItem(IDC_DROWREGION);
CClientDC dc(mywnd);
CPen mypen;
CPen* oldpen;
RECT rc;
mywnd->GetClientRect(&rc);
mypen.CreatePen(PS_SOLID,,RGB(,,));
oldpen = dc.SelectObject(&mypen);
dc.MoveTo(rc.left,rc.top);
dc.LineTo(rc.right,rc.bottom);
dc.SelectObject(oldpen);
}

3.3 加载位图

3.3.1 通过Picture控件来导入位图

  利用Picture控件来导入一幅位图,操作步骤如图3.4:

MFC技术积累——基于MFC对话框类的那些事儿2的更多相关文章

  1. MFC技术积累——基于MFC对话框类的那些事儿

    1. 创建对话框类 (1)打开VC++6.0环境,点击:文件→新建: (2)在弹出的新建对话框中选择:工程→MFC AppWizard (exe)→输入工程名称(例如:功能调试)→工程保存路径名→确定 ...

  2. MFC技术积累——基于MFC对话框类的那些事儿5

    4. 菜单 4.1 弹出菜单 本节主要讲解如何在主对话框的指定区域内通过鼠标右击来弹出一个菜单选项.最终效果图如图4.1. 如图4.1鼠标只能在指定区域(图中深色区域)内右击时弹出菜单,在指定区域外点 ...

  3. MFC技术积累——基于MFC对话框类的那些事儿3

    3.3.2 创建图形画刷来实现位图加载 1.首先在Resource View中导入一幅位图,位图大小96×96像素: 2.其次在主对话框中添加一个静态文本资源,ID号是IDC_BITMAPAREA,添 ...

  4. MFC技术积累——基于MFC对话框类的那些事儿4

    3.3.4 借助兼容DC加载DIB位图 创建一个与设备环境相兼容的DC,通过将位图暂时导入至兼容DC,然后利用CDC::BitBlt 或者CDC::StretchBlt函数将位图绘制到设备环境中. 示 ...

  5. MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕

    ////////////////////////////////////////////////////////////////////////////////////                 ...

  6. MFC编程入门之八(对话框:创建对话框类和添加控件变量)

    创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...

  7. mfc 在VC的两个对话框类中传递参数的三种方法

    弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...

  8. 【转】VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

    原文网址:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下, ...

  9. VS2010/MFC对话框三:创建对话框类和添加控件变量

    创建对话框类和添加控件变量 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 例程Addition是 ...

随机推荐

  1. ASP.NET统计图表控件

    近来客户需要将前段时间开发的统计信息用图表展示出来,还要多个图表类型,例如:柱状图.饼图.曲线图.三维图等等.在网上google了一下,发现了三个(也许更多)可以使用的控件.下面我们一起看看这三个控件 ...

  2. Spring注解的(List&Map)特殊注入功能

    一.先看一个示例演示:spring注解的一个特殊的注入功能. 首先,是定义一个接口,3个实现类. public interface GreetService { public String sayHe ...

  3. Programming With Objective-C---- Encapsulating Data ---- Objective-C 学习(三) 封装数据

      Programming with Objective-C Encapsulating Data In addition to the messaging behavior covered in t ...

  4. 任务31:课时介绍 & 任务32:Cookie-based认证介绍 &任务33:34课 :AccountController复制过来没有移除[Authorize]标签

    任务31:课时介绍 cookie-based网站这边的认证 jwt基于移动端和前后端分离的项目,jwt有一些独特的优势 jwt在asp.net core中的实现机制,了解实现机制并进行扩展.比如非标准 ...

  5. jqGrid 编辑完数据后能返回到当前位置的方法

    jqGrid 是一个js的jquery组件,虽然不轻便,但功能还是蛮强大的,也比较方便使用.在数据加载后,经常需要对其中的记录进行编辑,修改完后再返回时需要看到修改后的数据,一般采取重新加载的方法re ...

  6. 51nod 1272【二分+RMQ】

    思路: 这题不能说是长见识,倒是第一次写这么富有套路的题,倒着来,二分区间嘛,这个很简单啊,二分的条件查询一个当前区间的最小值是不是比那个特定的值小,一步步缩小,这就是二分嘛,然后查询用线段树的RMQ ...

  7. hdoj1007【几何】【未完待续】

    题意: 在一个平面上有n(1e5)个点,然后求一个圆来包住这些点,求这个圆的最小半径. 思考: 要使一个圆直接包了这些点,没有任何思路..

  8. Unity3D教程:换装方法

    http://www.manew.com/4136.html 游戏内的角色,能够像纸娃娃换装那样子让玩家可以为自己的角色改变外观,一直是相当受欢迎的功能:一般而言,我们建好的 3D 模型,如果要将其中 ...

  9. PAT团体程序设计天梯赛 - 模拟赛

    由于本人愚笨,最后一题实在无力AC,于是只有前14题的题解Orz 总的来说,这次模拟赛的题目不算难,前14题基本上一眼就有思路,但是某些题写起来确实不太容易,编码复杂度有点高~ L1-1 N个数求和 ...

  10. P4692 [Ynoi2016]谁的梦

    传送门 分别考虑每一种颜色对答案的贡献.每种颜色的贡献就是他出现的区间个数,那么可以用总区间减去不包含它的区间个数,把每一个序列里不包含它的区间个数加起来,然后不同序列用乘法原理计算即可 于是我辛辛苦 ...