您的位置:首页 > 编程语言 > C语言/C++

[翻译]VC++中创建并使用自定义控件

2013-07-27 23:30 281 查看
原文地址

介绍

您好!这是我在CodeProject上的第四篇文章。迁移到VC++,我第一个关注的是通过VC++帮助能够创建自定义控件,因为这是一个非常用有的特性,当你要修改任意控件的内容或创建新的控件的时候。所以我决定写这篇文章,这样新的开发者或第一次开发控件的人就能够从中得到帮助。
这就是所有的介绍,现在转到最初的观点:怎么创建自定义控件,为什么要创建自定义控件。我对在Win32 API下开发应用程序很感兴趣,因为它小巧并能独立运行,我从没用VC++开发过,但它是非常强大的语言,并且它强大的特性已经吸引我转向了它。自定义控件就是其中之一。CodeProjet上有很多使用自定义控件的文章。但是第一次阅读它们的时候,我不明白在简单的Windows应用程序中怎样去创建、获取和处理消息。自定义控件给开发者带来了一种方便的方式去创建控件并使其和其它常规控件一样可视化。(因为我是VC++的初学者,所以文章中如果有错请告知我)。

它在哪里

现在的问题是,自定义控件在哪里?答案就在下面。下图显示了自定义控件,它躺在控件栏中。

void CCustomControlDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCustomControlDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
DDX_Control(pDX,IDC_CUSTOM1,m_drawpad);
//}}AFX_DATA_MAP
}


View Code
现在,你做好准备动作了吗???好,按Ctrl+F5编译并执行程序。(但愿你都做对了……我想没有错误!!!)

别忘了在对话框的头文件里写#include "MyCustomControl.h",不然的话会生成很多错误。(我想你不会怪我哈哈哈)。

添加消息处理

上面的关键部分成功后,你就能看到对话框里有一个白色的矩形。这就是我们的自定义控件(相信我!)。这只是个不窗口。现在,我们添加一些窗口消息和我们的控件相交互。请仔细阅读……

为了给窗口添加Windows消息,右击MyCustomControl类并选择Add Windows Message Handler来添加消息,如mouse move,click等等。



这样子,在这么长(很长吗?)的工作后,你已经创建了你的自定义控件。现在放松一下,开始由你们自己写了。请对我的文章进行评论(我喜欢你们评论)。比如,我已经用包含的源代码写了一个简单的DrawPad。

现在我们来梳理一下这篇文件的简短概要:

要创建自定义控件,我们要做下面这些事情:

创建包含对话框的简单的MFC应用程序

控件栏中选择自定义控件。

对话框资源里绘制自定义控件。

右击自定义控件选择类向导

从Add Class菜单在添加新的类,选择合适的基类

添加代码并注册Custom Window class.

在对话框里给基类(自定义类)添加成员变量。

给已经注册的窗口类设置自定义控件。

添加DoDataExchange代码。

Ctrl+F5编译并执行程序。

在类视图里通过右击自定义控件类来添加/编辑Windows消息处理函数。

如果你喜欢它,给我邮件yogmj@hotmail.com,发送你的建议或文章里的拼写错误。或者这些源代码里的Bugs(因为
我是Bug猎手{我是这么认为的,你认为吗?})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: