rt

解决方案 »

  1.   

    可以, Create一个Progress控件,高度宽度同列,MoveWindow于该列的位置就可以了.
      

  2.   

    帮帮忙啊。 下面这段代码怎么不行啊??
    CRect rc,CellRect;
    m_list.GetItemRect(i,&rc,LVIR_LABEL);
    CellRect.bottom = rc.bottom;
    CellRect.top = rc.top;
    CellRect.right = rc.right;
    CellRect.left = rc.left - 360;

    CProgressCtrl ProgressCtrl;
    ProgressCtrl.Create(PBS_VERTICAL | PBS_SMOOTH, CellRect, this,0);
    HWND PChwnd = ProgressCtrl.GetSafeHwnd();
    ProgressCtrl.MoveWindow(&CellRect, TRUE);
      

  3.   

    是不是进度条被list覆盖了啊?
      

  4.   

    少了 WS_VISIBLE 风格,当然不出现,还有parent 窗口要设成list, MoveWindow函数用的坐标是基于父窗口的。改如下试试:ProgressCtrl.Create(WS_VISIBLE|PBS_VERTICAL | PBS_SMOOTH, CellRect, &m_list, 0);
      

  5.   

    CProgressCtrl控件要作为对话框成员定义,不能再函数内部定义,函数执行后该控件会销毁的,仍然看不到。CProgressCtrl ProgressCtrl;
    这行定义要放到对话框定义中
      

  6.   

    我的新问题出现了,所以仍然显示不了。我的程序是 多线程下载,所以,我的CProgressCtrl的m_Hwnd要作为全局变量传递给线程函数,我在Cwinapp里定义了
    CArray<CMyProgressCtrl,CMyProgressCtrl> ProCtrlArr;
    //CMyProgressCtrl只是重载了operator = 和copy construct,其它没做什么。
    CRect rc,CellRect;
    m_list.GetItemRect(i,&rc,LVIR_LABEL);
    CellRect.bottom = rc.bottom;CellRect.top = rc.top;
    CellRect.right = rc.right;CellRect.left = rc.left ;//- 360CMyProgressCtrl PCtrl;
    theApp.ProCtrlArr.Add(PCtrl);
    int nB = theApp.ProCtrlArr.GetSize();
    theApp.ProCtrlArr.GetAt(nB-1).Create(WS_VISIBLE|PBS_VERTICAL|PBS_SMOOTH,CellRect,&m_list,0);
    HWND PChwnd = theApp.ProCtrlArr.GetAt(nB-1).GetSafeHwnd();但是::IsWindow(PChwnd)老是返回为0  ,  问题出在哪里呢?
      

  7.   

    去www.codeproject.com去看看那个xListCtrl的代码吧.
      

  8.   

    CMyProgressCtrl PCtrl;
    是局部变量,出了这个函数就销毁了。