clistctrl控件添加列时,对于第一列,列对齐模式选择的是LVCFMT_RIGHT,可是其显示出来的效果并不是右对齐,而其他列却可以,请问这是怎么回事呀?如何使第一列右对齐?语句如下:
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_RIGHT;
lvc.iSubItem = i;
lvc.pszText = szColumnLabel[i];
lvc.cx = ColumnWidth[i];
m_ListCtrl->InsertColumn(i,&lvc);

解决方案 »

  1.   

    第一列只能左对其,这个由CListCtrl控件本身设计时就定了的!
    如果想左对其只有自己写!比如在你要插入的字符串左边插入一些空格符如"  edrf";
    但这样如果你的Item的宽度改变时,就又不会对其了!要想让其实时都能右对其的话那就要重载其
    OnNotify()消息函数!
      

  2.   

    对于你这个问题我想到了一种别的方法可代替,就是你可以将第一列的宽度设为0(或者很小,
    然后在OnNotify()消息函数里这样实现
    BOOL CWZQListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
    {
        HD_NOTIFY *pHDN = (HD_NOTIFY*)lParam;
        if(pHDN->iItem == 0)//iItem为你要使之不能改变的column!
        {
            *pResult = TRUE;    // disable change
            return TRUE;    // Processed message
        }
        return CListCtrl::OnNotify(wParam, lParam, pResult);
    这样可以使第0列固定不动,这样也可以达到以假乱真的效果啊!^_^