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是 ...
随机推荐
- hdu-2066 一个人的旅行(最短路spfa)
题目链接: 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Pr ...
- 数据连接池使用方法 JADI
1.编写context.xml 文件复制到 WebRoot/META_INF/context.xml <?xml version='1.0' encoding='utf-8'?> < ...
- LXC安装
#安装lxcsudo apt-get install lxc#创建一个容器,会出现下图选择的界面 lxc-create -t download -n my-container #开启lxc-start ...
- k8s-网络插件flannel-十八
一.kubernetes的网络模式 (1)Kubernetes网络需要解决的问题 集群内: 容器与容器之间的通信 Pod和Pod之间的通信 Pod和服务之间的通信 集群外: 外部应用与服务之间的通信 ...
- 模拟模板替换功能--js
概要: 因为之前的项目是angular开发(vue和react也是一样),对其中的双向数据绑定的使用感觉很方便,然后就思考怎么使用到jquery框架中来,适用于 列表生成 知识点: 正则与其反向引用, ...
- Spring-SpringMVC父子容器&AOP使用总结
此文已由作者尧飘然授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring&SpringMVC Spring&SpringMVC作为bean管理容器和MV ...
- BZOJ3834:Solar Panels (分块)
题意 询问两个区间[smin,smax],[wmin,smax]中是否存在k的倍数,使得k最大 分析 将其转化成\([\frac{smin-1}k,\frac{smax}k],[\frac{wmin- ...
- lightoj 1033【区间DP/LCS】
题意: 给你一个长度<=100的字符串. 然后你可以在任何位置插入字符,问最少插入几个构成回文. 思路: 1.长度-LCS: 2.区间DP; 我保证小的区间是一个回文,然后枚举区间,构成大区间, ...
- poj1837【背包】
题意: 有一根杆子,给出一些杆子上的位置,位置上能放重物,再给出一些重物的重量. 重物都需要被使用,但是位置不一定都要用到. 问你能有多少种方法让这个杆子平衡. 思路: 在位置上是0/1背包思想,取或 ...
- H5+JS实现手机摇一摇功能
在做微信活动页面的时候,经常会需要实现手机摇一摇功能,比如“摇一摇,拿好礼”. 为了实现它,就需要用到HTML5的DeviceOrientation特性.它提供的DeviceMotion事件封装了设备 ...