MFC中的CListCtrl的最左边一列必须左对齐吗?
来源:互联网 发布:巨人网络offer 编辑:程序博客网 时间:2024/05/21 17:25
好久不写MFC的程序了,很多细节问题都记不清了,今晚无意中要用到CListCtrl控件,希望能够表头采用自己绘制的方式显示,于是自己编写了OnPaint方法进行重绘,过程中需要根据每一列的对齐方式进行绘制表头中的标题文字,于是通过CHeaderCtrl的GetItem的方法取得每一列的信息,采用了如下语句:
- HDITEM tItem;
- ::ZeroMemory(&tItem, sizeof(tItem));
- TCHAR lpBuffer[256];
- tItem.mask = HDI_TEXT;
- tItem.pszText = lpBuffer;
- tItem.cchTextMax = 256;
- tItem.mask = HDI_FORMAT | HDI_TEXT;
- GetItem(i, &tItem);
在取得了列的信息之后,通过判断列中的对齐方式进行绘制,判断语句如下:
- if ((tItem.fmt & HDF_JUSTIFYMASK) == HDF_LEFT)
- {
- ......
- }
- else if ((tItem.fmt & HDF_JUSTIFYMASK) == HDF_CENTER)
- {
- ......
- }
- else if ((tItem.fmt & HDF_JUSTIFYMASK) == HDF_RIGHT)
- {
- ......
- }
但是我在想CListCtrl中插入列的时候,第一列我设置成了剧中对齐,但是结果无论如何都得不到正确的结果,偏偏其他列我又是设置的左对齐,所以结果所有列都是左对齐,于是我认为是不是GetItem没有取得对齐方式的数据,结果到MSDN中寻找帮助,结果一无所获,后来想想是不是我的MSDN太旧了,就到微软的MSDN网站查看帮助文档,结果在说明中发现了这样一句话:
Remarks
The leftmost column in a list view control must be left-aligned.
不觉感叹道:这是谁规定的啊?真是不地道。
于是问题又来了,如果让第一列能够做到剧中对齐呢?通过实验发现在InsertColumn的时候第一个参数就是列的索引,取值从1开始,这样就可以解决问题了。文档中并没有提及这个问题,想想文档的不细致给使用者带来了如此的麻烦,相信也有很多人遇到了这个问题,希望这个小小的博客能够帮助大家节省时间。
阅读全文
0 0
- MFC中的CListCtrl的最左边一列必须左对齐吗?
- MFC中的CListCtrl的最左边一列必须左对齐吗?
- word左边左对齐,右边右对齐
- 左侧线 延伸到最左边
- linux 清除左边一列的”
- MFC 中的CListCtrl简介
- MFC 中的CListCtrl简介
- MFC 中的CListCtrl简介
- MFC 中的CListCtrl简介
- MFC 中的CListCtrl简介
- 解决CListCtrl中第一列元素的只有左对齐问题的两种方法?
- MFC:在状态栏最左边显示鼠标当前的坐标
- MFC:在状态栏最左边显示鼠标当前的坐标
- UIAlertView文字的最简单左对齐方法
- c# winform datagridview 控件 删除最左边一列
- Textvie实现左边图片和换行文字左对齐
- 最左边的数
- MFC CListCtrl的用法
- laravel下载安装
- var与ES6中const、let声明的变量的区别
- 解压缩安装mysql
- 利用MIUI在不获取ROOT的情况下获取WIFI密码
- java中的堆、栈和常量池
- MFC中的CListCtrl的最左边一列必须左对齐吗?
- 技术主管和架构师的职责
- python字符串格式化输出
- 欢迎使用CSDN-markdown编辑器
- Android中获取颜色的几种方法
- Qt4简单截图功能的实现
- 第四方支付平台哪个好?
- Cause: net.sf.cglib.beans.BulkBeanException 解决方法
- 离线百度地图