真正的排序列表控件应当是,当单击第一列标头时,按编号对所有列表项进行排序;单击第二列时,按姓名对所有列表项进行排序;以此类推单击不同列就按不同的规则对所有列表项排序。打开本章第2节的“Si”工程,本节继续演示使用CListCtrl::SortItems函数对列表项排序的方法。5)以此类推,再创建按国籍排序的回调函数并修改代码。在列表控件中若要按多种方式对列表项排序,就要在调用CListCtrl::SortItems函数时,代入不同的回调函数的地址。......
2023-11-25
在列表控件中,不但每行列表项可以设置不同的图标,而且每列的标头也可以设置图标。图像列表添加图像的方法有两种(参见CImageList::Add函数),一种是加入图标的方式,另一种是加入带透明色的位图的方式。
打开第1节建立的“Si”工程,本节演示单击不同列标头时显示不同方向的三角形图标。
1)在资源视图的根节点上单击鼠标右键,在弹出的快捷菜单中,选择“Insert”命令添加2张位图,如图10-10所示。
图10-10 插入位图资源
2)修改2张位图的尺寸(16×16),一张ID为IDB_ASCENT的图形是向上的三角形,另一张ID为IDB_DESCENT的图形是向下的三角形,如图10-11所示。
图10-11 编辑位图资源
3)在主对话框类的头文件(SiDlg.h)中,再添加一些类成员变量。
4)重新修改对话框初始化函数OnInitDialog的代码。
(www.chuimin.cn)
5)在类向导中添加列表控件的LVN_COLUMNCLICK消息反射函数,如图10-12所示。
图10-12 添加LVN_COLUMNCLICK消息反射函数
6)修改消息反射函数OnColumnclickList代码。
7)编译并运行,测试代码,如图10-13所示。
图10-13 查看运行结果
当单击不同的列标头时,排序图标会出现在相应的列标头上;当反复单击同一列标头时,正反排序图标会相互交替显示。
有关VC++就业培训宝典之MFC视频教程的文章
真正的排序列表控件应当是,当单击第一列标头时,按编号对所有列表项进行排序;单击第二列时,按姓名对所有列表项进行排序;以此类推单击不同列就按不同的规则对所有列表项排序。打开本章第2节的“Si”工程,本节继续演示使用CListCtrl::SortItems函数对列表项排序的方法。5)以此类推,再创建按国籍排序的回调函数并修改代码。在列表控件中若要按多种方式对列表项排序,就要在调用CListCtrl::SortItems函数时,代入不同的回调函数的地址。......
2023-11-25
在本章第5节中,通过“Win32 Application”建立的MFC32工程,目的是为了演示MFC工程的架构原理。一个MFC工程必须包含一个CWinApp的派生类,并定义一个派生类的全局变量theApp,最后重写InitInstance虚函数用于处理进程启动过程。本节直接通过“MFC AppWizard”来创建MFC工程,用于对照以上说明的MFC必备因素。图3-54 程序向导生成的代码图3-55 MFC类向导在Class name下拉列表中选择CTestMFCDlg类,在Member functions列表框中显示4个已添加的回调函数。......
2023-11-25
互联网网络通信的基础是TCP/IP,即传输控制协议和网络互联协议。按照TCP/IP规定,32位IP地址用4个字节来表示,例如,“192.168.1.100”。图15-1 通过命令查看本机网络配置在“本地连接”的属性设置对话框中,双击“Internet协议”,如图15-2所示。图15-2 查看网络邻居属性图15-3 TCP/IP属性设置在TCP/IP中计算机软件通信必须依赖于通信端口,端口号的范围是0~65535。......
2023-11-25
本节演示在MFC中,开发弹出对话框的过程和弹出对话框消息处理的过程。MFC的消息处理不是使用一个全局的回调函数,而是创建一个与窗口关联的派生类,用于消息关联的成员函数来接收和处理窗口的消息。在类向导中选择对应的消息,添加与该消息关联的成员函数来处理该消息,这就是MFC的消息映射机制。MFC的消息映射机制,一般不需要开发者解析这些复杂的数据,因为消息映射函......
2023-11-25
当框架类窗口大小变化时,客户区内所有子窗口的位置自动排布。CFrameWnd类对工具栏的停靠和浮动控制,在其他CWnd派生类中都难以实现。图12-35 CFrameWnd类①调用CFrame::Create函数直接创建。LoadFrame对参数进行裁剪,只有第一个参数必须代入,其余参数具有默认数值。LoadFrame不需要代入窗口类型名,也就无需在创建前先注册。CDocTemplate对象将框架、视图与文档绑定在一起,三个组成部分统一由系统内部创建。表12-5 CFrameWnd类的常用成员(续)2)CMDIFrameWnd类如图12-36所示。......
2023-11-25
CBrush类的主要成员见表7-4。表7-4 CBrush类的主要成员1)用于填充的阴影线风格主要包括以下几种。创建一个工程名为“Brush”的对话框程序,用于演示选用不同画刷进行绘画的效果。2)在资源视图中,单击鼠标右键,在弹出的快捷菜单中,选择“Import”命令导入位图,如图7-16所示。图7-19 查看运行结果CBrush类构造函数与CreateSolidBrush和CreateHatchBrush等函数的功能基本一样,都可以用于创建一个画刷。一般当使用新画刷绘画结束后,最好恢复选择回旧画刷。......
2023-11-25
进入调试状态后,在Visual C++6.0底部会自动出现2个窗口。它们分别是手动变量观察窗口和自动变量观察窗口。此外,Visual C++6.0的顶部还会出现一个调试工具栏。以上窗口只能在调试状态下才能出现,在正常的编辑状态下是无法出现的,在默认情况下,左边是Variables窗口,右边是Watch窗口。Variables上方比Watch多了一个下拉窗口,内部列出的是函数之间的调用关系。图1-24 自动变量观察窗口图1-25 Debug工具栏6)Debug工具栏中显示的都 是重要的调试功能。......
2023-11-25
将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2023-11-25
相关推荐