将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2025-09-30
自绘按钮是最容易开发的自绘控件,其他支持自绘的界面对象还有组合控件、列表控件以及自绘菜单等。开发这些自绘界面的难度要大一些,例如,组合控件要自绘下拉列表中的每一项,列表控件还要对不同的行和列进行处理等。
打开本章第5节的“Si”工程,本节将继续开发一个带图标和文字的组合控件。
1)修改国籍组合控件的属性,选择Owner draw中的Variable选项,如图10-33所示。
图10-33 设置组合框控件的属性
2)清除Data中的数据,如图10-34所示。
图10-34 清除Data中的数据
3)在类视图的根节点上单击鼠标右键,在弹出的快捷菜单中,选择“New Class”命令,新建一个MFC派生类,如图10-35所示。
图10-35 创建CComboBox派生类
4)在建立好的组合控件类头文件中,添加一些成员变量用于保存下拉列表项的信息。
5)在构造函数中初始化成员变量。
6)在类视图中的CIconCombo类名称上单击鼠标右键,在弹出的快捷菜单中,选择“Add Member Function”命令,创建普通成员函数,如图10-36所示。
图10-36 添加普通成员函数
7)这是基类同名函数的重写函数,修改该函数的代码。
8)用同样的方法,添加普通成员函数并修改函数代码。
9)用同样的方法,添加普通成员函数并修改函数代码。
10)用同样的方法,添加普通成员函数并修改函数代码。(https://www.chuimin.cn)
11)用同样的方法,添加普通成员函数并修改函数代码。
12)在类视图中为CIconCombo类添加两个虚函数,如图10-37所示。
图10-37 通过右键菜单添加虚函数
13)虚函数MeasureItem根据下拉列表项的索引,设置项的高度和宽度。
14)虚函数DrawItem根据下拉列表项的索引,绘制每项图标和文字。
15)添加WM_DESTROY的消息映射函数OnDestroy。
16)在类向导中删除CComboBox关联变量,重现建立CIconCombo类型关联变量,如图10-38所示。
图10-38 添加控件型关联变量
17)在对话框初始化函数OnInitDialog中,添加代码初始化自绘的组合控件。
18)注意要在主对话框类的头文件中,包含自绘控件类的头文件。
19)编译并运行,测试代码,如图10-39所示。
图10-39 查看运行结果
组合控件在设置了自绘属性之后,一些文字相关函数全部都失效了,因此,要在派生类中重写这些函数。例如,AddString、InsertString和GetLBText等。
如果选择Owner draw的Fixed属性,则下拉列表中的每项高宽由系统自动设置,MeasureItem虚函数不被回调;如果选择Variable属性,则下拉列表中的每项高宽由用户设置,在MeasureItem回调函数中可以设置不同高度列表项。
相关文章
将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2025-09-30
MSDN通俗地说就是Visual C++6.0的 使用说明书。1)打开MSDN的方法如下。执行“开始”→“程序”→“Microsoft Developer NetWork”→ “MSDN-Library”命令。②从VisualC++6.0的帮助菜单中打开。在Visual C++6.0主菜单中,执行Help→Index命令即可。在Visual C++6.0的源代码窗口中,选中一个函数名后按<F1>键。在MSDN左侧的索引中输入“printf”然后按<Enter>键,打开关于该函数的说明。一个函数的说明主要包括以下7个部分。......
2025-09-30
打开本章第1节建立的“QQ”工程,本节继续演示账号及权限管理与登录对话框的组合。表5-2 “权限管理”对话框的控件属性4)通过类向导为IDD_PRIOR_DLG建立一个对话框类“CPriorDlg”,如图5-8所示。12)在权限管理对话框中,分别双击增、删、改的3个按钮,建立消息映射函数。登录成功后进入主对话框单击“权限管理”按钮,进入“权限管理”对话框添加一些账户信息,然后使用新添加的账户重新登录,如图5-16所示。......
2025-09-30
图5-1 插入新对话框资源图5-2 编辑登录对话框3)添加一些控件并修改控件的属性,见表5-1。表5-1 “登录”对话框的控件属性4)在“登录”对话框上单击鼠标右键,在弹出的快捷菜单中,选择“ClassWizard”命令,或按快捷键<Ctrl+W>,如图5-3所示。图5-3 打开类向导图5-4 创建登录对话框的关联类6)在登录对话框资源中双击“登录”按钮,建立消息映射函数OnOK并编写代码。......
2025-09-30
创建一个工程名为“Mdc”的对话框程序,演示CMemDC类的封装及调用过程。2)选中“C/C++Header File”项,输入“MemDC”后单击“OK”按钮,如图8-2所示。图8-3 编辑主对话框资源5)在主对话框类的头文件中,修改代码,增加两个CMemDC类对象。图8-4 添加WM_SIZE消息映射函数7)修改消息映射函数代码,当窗口大小变化时在内存DC中缩放背景图。图8-5 查看运行结果本示例重点演示了CMemDC类的封装过程,以及加载文件位图和创建内存DC的方法。......
2025-09-30
真正的排序列表控件应当是,当单击第一列标头时,按编号对所有列表项进行排序;单击第二列时,按姓名对所有列表项进行排序;以此类推单击不同列就按不同的规则对所有列表项排序。打开本章第2节的“Si”工程,本节继续演示使用CListCtrl::SortItems函数对列表项排序的方法。5)以此类推,再创建按国籍排序的回调函数并修改代码。在列表控件中若要按多种方式对列表项排序,就要在调用CListCtrl::SortItems函数时,代入不同的回调函数的地址。......
2025-09-30
在MFC封装的三个CDC派生类中,只有构造函数和析构函数两个成员函数,这是一种特殊结构的封装类。以上为CPaintDC类简易的代码结构,通过这个结构可以避免忘记调用EndPaint函数问题。CDC派生类的结构和功能说明见表7-1。表7-1 CDC派生类的结构和功能说明使用MFC应用程序向导创建一个工程名为“xdc”的对话框程序,演示在WM_PAINT消息回调时通过CPaintDC执行标准绘图过程。使用MFC封装类CClientDC对非客户区绘图效率高并且很方便。......
2025-09-30
打开本章第7节建立的“Tp”工程,继续演示CWinApp类的开发应用。1)修改启动函数CWinApp派生类的构造函数代码。m_pszAppName成员变量有三种途径赋值,首先在CWinApp构造函数中获得字符串。在App派生类以外,调用CWinApp类成员函数的方法有两种。CWinApp类的成员函数LoadIcon和LoadStandardIcon,实际上是封装了API函数LoadIcon的结果。和加载图标的两个函数一样,CWinApp类的成员函数LoadCursor和LoadStandardCursor,分别用于加载程序光标和系统光标资源,它们封装的也是同一个API函数LoadCursor。......
2025-09-30
相关推荐