MFC技术积累——基于MFC对话框类的那些事儿2
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的更多相关文章
- MFC技术积累——基于MFC对话框类的那些事儿
1. 创建对话框类 (1)打开VC++6.0环境,点击:文件→新建: (2)在弹出的新建对话框中选择:工程→MFC AppWizard (exe)→输入工程名称(例如:功能调试)→工程保存路径名→确定 ...
- MFC技术积累——基于MFC对话框类的那些事儿5
4. 菜单 4.1 弹出菜单 本节主要讲解如何在主对话框的指定区域内通过鼠标右击来弹出一个菜单选项.最终效果图如图4.1. 如图4.1鼠标只能在指定区域(图中深色区域)内右击时弹出菜单,在指定区域外点 ...
- MFC技术积累——基于MFC对话框类的那些事儿3
3.3.2 创建图形画刷来实现位图加载 1.首先在Resource View中导入一幅位图,位图大小96×96像素: 2.其次在主对话框中添加一个静态文本资源,ID号是IDC_BITMAPAREA,添 ...
- MFC技术积累——基于MFC对话框类的那些事儿4
3.3.4 借助兼容DC加载DIB位图 创建一个与设备环境相兼容的DC,通过将位图暂时导入至兼容DC,然后利用CDC::BitBlt 或者CDC::StretchBlt函数将位图绘制到设备环境中. 示 ...
- MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕
//////////////////////////////////////////////////////////////////////////////////// ...
- MFC编程入门之八(对话框:创建对话框类和添加控件变量)
创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...
- mfc 在VC的两个对话框类中传递参数的三种方法
弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...
- 【转】VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)
原文网址:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下, ...
- VS2010/MFC对话框三:创建对话框类和添加控件变量
创建对话框类和添加控件变量 前两讲中讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 例程Addition是 ...
随机推荐
- 2018.8.10Yukimai模拟Day1
这的确是最惨的一次模拟了……不会再惨了(10pts除非爆零orz) 总结一下吧…… T1 .章鱼 众所周知,雪舞喵有许多猫.由于最近的天气十分炎热,雪舞城的大魔法师雪月月根本不想出门,只想宅在家里打隔 ...
- Python3中使用PyMongo的方法详解
前言 本文主要给大家介绍的是关于在Python3使用PyMongo的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍: MongoDB存储 在这里我们来看一下Python3下Mongo ...
- web_html-day1
概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...
- qq截图原理
屏幕截图实现的大体思想是:发起截图时,将当前窗口的图像保存到内存中,然后弹出一个置顶的全屏窗口,将保存的桌面图片绘制到这个全屏窗口上:初始时绘制的是灰化的桌面图像,选择截图区域后,则将选中的区域绘制成 ...
- 一个坑爹的Swift报错原因分析与解决方案
有时候在实际开发中,完全没有任何问题.但是一到实机测试,就会直接卡机 let count = scoreStorage.count return scoreStorage[Int(arc4rand ...
- 704. Binary Search
Given a sorted (in ascending order) integer array nums of n elements and a target value, write a fun ...
- Codeforces703B Mishka and trip
题意: 就是有n个点,本来相邻点之间就有一条边,1和n之间也有一条,然后给你几个特殊点,说这些特殊点和其他所有点都连起来了,然后算一个所有边的权值和,每条边的权值等于两个点的c相乘. 思路: 水题啊- ...
- Codeforces Round #357 (Div. 2)C. Heap Operations
用单调队列(从小到大),模拟一下就好了,主要是getMin比较麻烦,算了,都是模拟....也没什么好说的.. #include<cstdio> #include<map> #i ...
- poj2893 M*N puzzle 【n*m数码问题小结】By cellur925
题目传送门 这个问题是来源于lydrainbowcat老师书上讲排序的一个扩展.当时讲的是奇数码问题,其实这种问题有两种问法:一种局面能否到另一种局面.到达目标局面的最小步数. 本文部分内容引用于ly ...
- 普通app自动化测试与手游app自动化测试的区别
[转载] 手游自动化测试与App自动化测试技术上的区别 手游和App的开发技术不同,导致了两者的自动化测试技术完全不同.一般来说,安卓应用是使用Android SDK开发的,利用Java编写.那么在A ...