[翻译]VC++中创建并使用自定义控件
2013-07-27 23:30
281 查看
原文地址
介绍
您好!这是我在CodeProject上的第四篇文章。迁移到VC++,我第一个关注的是通过VC++帮助能够创建自定义控件,因为这是一个非常用有的特性,当你要修改任意控件的内容或创建新的控件的时候。所以我决定写这篇文章,这样新的开发者或第一次开发控件的人就能够从中得到帮助。
这就是所有的介绍,现在转到最初的观点:怎么创建自定义控件,为什么要创建自定义控件。我对在Win32 API下开发应用程序很感兴趣,因为它小巧并能独立运行,我从没用VC++开发过,但它是非常强大的语言,并且它强大的特性已经吸引我转向了它。自定义控件就是其中之一。CodeProjet上有很多使用自定义控件的文章。但是第一次阅读它们的时候,我不明白在简单的Windows应用程序中怎样去创建、获取和处理消息。自定义控件给开发者带来了一种方便的方式去创建控件并使其和其它常规控件一样可视化。(因为我是VC++的初学者,所以文章中如果有错请告知我)。
它在哪里
现在的问题是,自定义控件在哪里?答案就在下面。下图显示了自定义控件,它躺在控件栏中。
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猎手{我是这么认为的,你认为吗?})
介绍
您好!这是我在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猎手{我是这么认为的,你认为吗?})
相关文章推荐
- [翻译]使用Swift在Xcode中创建自定义控件
- [翻译]在VB中调用VC中创建的自动化服务器,使用语法OBJ1.OBJ2.Property
- [转]使用VC/MFC创建一个线程池
- 【翻译】使用IIS 7.0 PowerShell 创建web站点,Web应用,虚拟路径和应用程序池
- 如何用vc6创建和使用静态库(lib)
- ASP.NET中自定义控件的创建和使用(转)
- 使用VC创建单文档,并实现视图切换
- [翻译] ASP.NET MVC Tip #1 - 使用扩展方法创建新的HTML Helper
- 【翻译】使用ASP.NET MVC 和 LINQ 创建一个Blog引擎实例-第一节
- VC++ DLL创建与使用_v2
- [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)
- 原创翻译 使用Windows Embedded Standard创建电池供电的设备(一)
- 使用gitbash创建一个翻译词典
- VC使用Excel创建保存新workbook文档 删除worksheet
- android自定义控件的创建和使用
- 《Programming WPF》翻译 第6章 1.创建和使用资源
- 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件
- IBM的云平台Bluemix使用初体验——创建Go语言 Web 应用程序,添加并使用语言翻译服务
- JavaFX文档(12)掌握FXML——4使用FXML来创建自定义控件
- 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件(一共4篇文章)