修改ListCtrl控件列标题文本居左显示


修改ListCtrl控件标题文本居左显示

原来的列标题文本是居中显示:

现在要把列表文本居中改为居左显示

其方法如下:

  1. 获得标题控件句柄

g_listCtrl.m_hWnd为ListCtrl控件的句柄

HWND hHead =(HWND)::SendMessage(g_listCtrl.m_hWnd, LVM_GETHEADER, 0, 0);

  1. 在ListCtrl控件插入列后面,获得列的总数

int nCol = SendMessage(hHead, HDM_GETITEMCOUNT, 0, 0);

  1. 循环设置列的文本居左显示

要填充一个HDITEM结构体

for (int i = 0; i < nCol; i++)

              HDITEM ht = { 0 };

    ht.mask = HDI_FORMAT /*| HDI_WIDTH | HDI_TEXT*/;//设置下面的fmt数据有效的掩码

 

    ht.fmt = HDF_LEFT | HDF_STRING; //主要是这句,设置为居左,显示字符串

    int n = SendMessage(hHead, HDM_SETITEM, i, LPARAM(&ht));    

这样就成功修改列标题文本显示的位置了.