自定义窗口不但可以用于作为主窗口开发框架软件或者全屏软件,也常用于作为子窗口开发自定义控件。创建一个工程名为“bt”的对话框程序,演示通过创建自定义子窗口来开发一个按钮的过程。图11-13 创建通用窗口派生类2)在建立好的自定义按钮类头文件中,添加一些成员变量和函数。5)在类视图中添加一些窗口显示和与鼠标操作相关的消息映射函数,如图11-14所示。9)在源文件中,简单编写两个按钮的消息反射函数。......
2025-09-30
按钮控件是容易开发的控件,开发内部含有多个子项的控件难度就比较大,例如,组合控件、列表控件以及树形控件等。本节以自定义标签控件的开发过程,演示控件内部多个子项的处理方式。
使用MFC应用程序向导,创建一个工程名为“tb”的基于对话框程序,用于演示通过创建自定义子窗口来开发一个标签控件的过程。
1)在类视图中添加CWnd派生类,由空白窗口开发出一个标签控件,如图11-16所示。
图11-16 创建通用窗口派生类
2)在建立好的自定义按钮类头文件中(TestTab.h),添加一些成员变量和函数。
3)在源文件(TestTab.cpp)中,修改构造函数初始化成员变量。
4)在源文件中,编写注册和创建两个成员函数的代码。
5)在源文件中,继续编写插入标签项的函数。
6)在类视图中添加一些窗口显示与鼠标操作相关的消息映射函数,如图11-17所示。
图11-17 添加多个消息映射函数(https://www.chuimin.cn)
7)修改以上建立的所有消息映射函数的代码。
8)在主对话框的头文件(tbDlg.h)中,添加一些成员变量和函数。
9)在主对话框的源文件中,编写TCN_SELCHANGE的消息反射函数。
10)添加消息映射代码,建立控件消息和函数之间的关联。
11)修改主对话框的初始化函数,调用CTestTab::Create函数创建自定义标签控件。
12)编译并运行,测试代码,如图11-18所示。
本示例演示了将空白窗口加工成为标签控件的过程,微软的开发人员也是这样开发标签控件的。
图11-18 查看运行结果
相关文章
自定义窗口不但可以用于作为主窗口开发框架软件或者全屏软件,也常用于作为子窗口开发自定义控件。创建一个工程名为“bt”的对话框程序,演示通过创建自定义子窗口来开发一个按钮的过程。图11-13 创建通用窗口派生类2)在建立好的自定义按钮类头文件中,添加一些成员变量和函数。5)在类视图中添加一些窗口显示和与鼠标操作相关的消息映射函数,如图11-14所示。9)在源文件中,简单编写两个按钮的消息反射函数。......
2025-09-30
自绘按钮是最容易开发的自绘控件,其他支持自绘的界面对象还有组合控件、列表控件以及自绘菜单等。开发这些自绘界面的难度要大一些,例如,组合控件要自绘下拉列表中的每一项,列表控件还要对不同的行和列进行处理等。打开本章第5节的“Si”工程,本节将继续开发一个带图标和文字的组合控件。1)修改国籍组合控件的属性,选择Owner draw中的Variable选项,如图10-33所示。......
2025-09-30
将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2025-09-30
2)所有控件创建时,都要在CWnd::Create函数中代入窗口ID、风格、位置和父窗口等。4)注册自定义窗口类型。MFC全局函数,先检测要注册的窗口类型是否存在。并将接口参数简化以方便调用,返回值是自动生成的随机窗口类型名。5)创建一个工程名为“wd”的对话框程序,用于演示自定义窗口的注册和创建。总结使用自定义窗口做主窗口的特点如下。......
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
创建一个工程名为“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
打开本章第7节建立的“Tp”工程,继续演示CWinApp类的开发应用。1)修改启动函数CWinApp派生类的构造函数代码。m_pszAppName成员变量有三种途径赋值,首先在CWinApp构造函数中获得字符串。在App派生类以外,调用CWinApp类成员函数的方法有两种。CWinApp类的成员函数LoadIcon和LoadStandardIcon,实际上是封装了API函数LoadIcon的结果。和加载图标的两个函数一样,CWinApp类的成员函数LoadCursor和LoadStandardCursor,分别用于加载程序光标和系统光标资源,它们封装的也是同一个API函数LoadCursor。......
2025-09-30
相关推荐