读书人

关于自己继承的CMyListCtrl里面放一个

发布时间: 2012-09-27 11:11:17 作者: rapoo

关于自己继承的CMyListCtrl里面放一个CListCtrl时,没能显示列表头
我的CMyListCtrl 用了CHeadCtrl的

我在CMyListCtrl 成员里声明了一个CListCtrl用作子控件,打算双列表显示,子控件用于遮盖显示前三列的数据,它将显示位于CMyListCtrl 只上,

C/C++ code
void CMyListCtrl::SetLeftColumnShowed(int imany){    if (!AboveList.GetSafeHwnd())    {        AboveList.Create((WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_NOSCROLL),            CRect(0,0,10,10), this, IDC_SUB_LIST);         }        TCHAR szBuff[256]="";     LVCOLUMN LVcol;        LVcol.pszText=szBuff;    LVcol.mask = LVCF_WIDTH|LVCF_TEXT ;       LVcol.cchTextMax= 256;    int len = 0;    for (int i=0;i<imany;i++)    {        this->GetColumn(i,&LVcol);        len+=LVcol.cx;        AboveList.InsertColumn(i,LVcol.pszText,0,LVcol.cx);//插入成功,但没有显示到列表头        AboveList.InsertItem(i,"qqq");//随便插入        AboveList.SetItemText(i,1,"11");    }        CRect rc;    this->GetWindowRect(&rc);    //AboveList.SetWindowPos(&this->wndTopMost,0,200,500,500,SWP_SHOWWINDOW);//??没效    AboveList.MoveWindow(0,15,len+1,rc.Height(),1);        }


插入成功,但没有显示到列表头

WHY呢
我尝试在样式那里 改为WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_NOSCROLL)&~LVS_NOCOLUMNHEADER 都一样


[解决办法]
.
[解决办法]
可以加上WS_EX_LEFTSCROLLBAR风格,让滚动条显示在左边,把子控件的位置设置靠左一点,让滚动条刚好位于父控件之外,使其看不到。
[解决办法]
探讨
注意上面提到的WS_EX_LEFTSCROLLBAR是扩展风格。

关于滚动同步方面,可以考虑使用LVS_EX_DOUBLEBUFFER扩展风格,还有LockWindowUpdate函数,另外最好先更新可见面积大的控件。

读书人网 >VC/MFC

热点推荐