VC控件指南

2019-01-19 18:32

VC控件

1.1 常见控件列表

Windows标准控件即普通控件,撰写此文时,笔者每天面对的Word就带了一脸的控件,当然你肯定也熟悉:字体选择下拉框、工具栏、滚动条、状态栏,如此等等。 常见的Windows标准控件在VC里就有:

图2 控件集窗口

通常这个控件集窗口在你的对话框设计界面的附近总能找到,如果找不到,在VC工具栏的任何空白处点击右键,在弹出菜单的Controls菜单项前面打上勾即可,如图所示:

图3 显示控件集窗口

你也许已经看到了,我们图1所示的FlashPlayer中有3个控件是Windows标准控件,好,我们先系统地学习一下怎么使用这3个控件。 1.2 引入控件 1. 准备对话框

对话框相当于控件的容器,我们当然要先准备一个对话框。好办,直接创建一个基于对话框的工程就是了:

图4 准备对话框Step 1

注意,在Step 2中要确认“3D Controls”和“ActiveX Controls”前面打上勾,如图所示:

图5 准备对话框Step 2

这样你的程序就支持三维控件和我们后面即将使用到的ActiveX控件了。如果去掉了勾,或者你面对的正是你师兄当年准备论文的旧的project,它好像并不支持ActiveX控件,那该怎么办呢(好多VC网友总是带着那张哭丧脸的表情问我这种问题)?没事,在主程序文件的InitInstance()函数头部加上以下语句即可: BOOL CFlashPlayerApp::InitInstance() { AfxEnableControlContainer();

#ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif

//… }

对话框准备好了,缺省情况下,它总会自动带上3个控件:2个按钮,“确定”与“取消”和一个“TODO: 在这里设置对话控制” 文本标签。 2. 准备文本编辑框

文本标签我们并不需要,那么就直接删除之。但我们需要一个文本编辑框,用以显示Flash文件路径。引入新的Windows标准控件很简单,只要简单地从控件集窗口选择相应的控件拖拽至对话框即可。好,我们拖来一个文本编辑框:

图6 引入文本编辑框控件 1.3 设置控件属性

引入来的控件,可以通过鼠标简单的拖拽调整其位置和大小,当然,你还可以通过属性对话框来设计这个控件。在控件上右击鼠标,弹出菜单:

图7 控件的属性窗口

这个菜单即将覆盖本教程的大部分内容,菜单最下面的三行分别为: ClassWizard… 为控件创建类及变量 Events… 为控件映射事件 Properties 设置控件的属性

前两项后面的内容将要讨论到,我们现在只关心Properties(属性),点击它即可弹出文本编辑框的属性界面:

图8 文本编辑框的属性界面

我们按照以下的步骤进行控件的属性设置:

1. 在“General(普通)”标签页里将文本编辑框的ID修改成IDC_FLASH_FILE,而不是缺省的IDC_STATIC;

2. 在“Styles(样式)”标签页里将文本编辑框的Read-only打勾,这样我们的文本编辑框就显示成灰色,并且只读。也就是说,它的,内容只能由程序更改,用户不能手动输入;

3. 同理,在两个按钮的“General(普通)”标签页里,设置它们的Caption(标题),分别为“浏览…”和“退出”; 4. 在“浏览…”按钮的“General(普通)”标签页里,将它的ID设置成ID_BROWSER;

需要指出的是,每个控件都具有ID,就相当于每个人都具有一个身份证号。除了IDC_STATIC(它的值是-1),每个对话框的控件的ID都必须唯一,不能重复。一些特定的ID代表特定的含义,如:IDOK对应于“确定”按钮,IDCANCEL对应于“取消”按钮,IDC_STATIC则对应于一个匿名控件。MFC认识这些特定的ID,并赋值于指定的行为,例如:你可以不需要编写任何代码,就可以使用“确定”按钮关闭对话框,就是这个原因。

以上内容指引你如何修改控件的属性,包括它的ID、标题以及样式。这种修改都是所见即所得的,运行程序,你就会欣喜地发现,一切确实都改过来了。 1.4 映射控件变量

好了,你现在有了一个文本编辑框,可是如何使用它,你还是一无所知。那么,我们开始学习如何将控件映射成一个变量,这个过程即“映射控件变量”,或曰“绑定控件变量”。 映射控件变量是VC的一个很好的功能,有了它,你就可以象使用一个变量一样控制控件。映射成什么类型的变量,这依赖于你的控件。一般来说,一个控件可以映射成一个值变量(Value),也可以映射成一个控件对象(Control)。如:一个文本编辑框既可以映射成一个CString值,也可以映射成一个CEdit对象,CString是个字符串,而CEdit则是MFC为文本编辑框专门准备的控件类。 1.4.1 控件 -> 值变量

我们从简单的入手,先将我们的文件路径文本编辑框映射成一个普通的值变量,按照以下操作慢慢来: 1. 在编辑框上打开右键菜单(如图7所示),选择ClassWizard…,弹出以下界面:

图9 ClassWizard窗口

有点晕。先不管别的,因为我们要映射变量,我们就选择“Member Variables”标签页, 这儿可以看到当前对话框中的所有控件,包括我们的文本框和其它两个按钮;

2. 找到我们的IDC_FLASH_FILE,双击之(或者点击“Add Variable…”按钮),就弹出了映射控件变量窗口:

图10 添加控件值变量

该界面分别要求输入变量名、类别和变量类型,不用争了,我们选择Value和CString,将IDC_FLASH_FILE映射成CString m_sFilePath。

大功告成!可以同时观察VC程序代码中的变化: class CFlashPlayerDlg : public CDialog { // … // Dialog Data

//{{AFX_DATA(CFlashPlayerDlg)

enum { IDD = IDD_FLASHPLAYER_DIALOG }; CString m_sFilePath; //}}AFX_DATA }

CFlashPlayerDlg::CFlashPlayerDlg(CWnd* pParent /*=NULL*/) : CDialog(CFlashPlayerDlg::IDD, pParent) { //{{AFX_DATA_INIT(CFlashPlayerDlg) m_sFilePath = _T(\//}}AFX_DATA_INIT // … }

void CFlashPlayerDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFlashPlayerDlg)

DDX_Text(pDX, IDC_FLASH_FILE, m_sFilePath); //}}AFX_DATA_MAP }

下面我们先试试这个CString m_sFilePath的使用,如: BOOL CFlashPlayerDlg::OnInitDialog()

{ CDialog::OnInitDialog(); m_sFilePath = \空即是色\ // … }

遗憾的是,以上的代码是没用的!与Visual Basic不同,在VC的世界里,映射的值变量与实际控件的内容并不保持同步,欲使用映射的值变量就必须额外地使用到UpdateData()函数,它的函数原型如下:


VC控件指南.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:唐诗研究-最全笔记

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: