关于在ClassWizard产生的类成员变量(与一控件映射的)可不可以由外部类来访问?通过更改值指向外部类的一控件  
 
   
class CAllReports : public CDialog
{
// Construction
public:
void Show_OnDutyInforEx_Table(); CAllReports(CWnd* pParent = NULL);   // standard constructor
~CAllReports(); _RecordsetPtr m_pRecordset;
// Dialog Data
//{{AFX_DATA(CAllReports)
enum { IDD = IDD_REPORT_DIALOG };
CListCtrl  m_rep;
         //}}AFX_DATA
}
因为这个类中Show_OnDutyInforEx_Table是将数据插入到m_rep..与这个类上的CLISTCTRL控件相联系的.我想在另一个类中调用此Show_OnDutyInforEx_Table函数,所有要改变
m_pRecordset与m_rep.
如:void CDetailReports::ShowRecords()
{

CListCtrl *preportlist = (CListCtrl *) GetDlgItem(IDC_DETAILREP_LISTCTRL);CAllReports AllReport;  AllReport.m_rep = *preportlist; 这句编译不过,不知该如何写?
  AllReport.m_pRecordset = m_pRecordset;  AllReport.Show_OnDutyInforEx_Table();
}//AllReport.m_rep = m_reportlist; //*preportlist; 这句不知该如何写?ERROR: 'CListCtrl' : 'operator =' function is unavailable可不可以这么改变的呢?
若可以,该如何写?
是关于CListCtrl的对象如何赋值的问题?
  
  
 
    
 
 
 管理 | 关闭窗口  
 
 

解决方案 »

  1.   

    需要自己重载=操作符,但是不推荐这么做,太麻烦。
    建议在CAllReports添加一个ClistCtrl指针,然后直接将preportlist赋过去。最好不要把类的成员直接暴露出来,建议写一个SetListCtrl(CListCtrl* pListCtrl)之类的函数赋值,在赋值的时候可以顺便检查一下pListCtrl是否合法。
      

  2.   

    (CListCtrl *) GetDlgItem(IDC_DETAILREP_LISTCTRL)和AllReport.m_rep不一样吧?
    是有两个ListCtrl么?
    那应该做一个数据传送的函数,把要显示的内容复制过去,而不是这样直接复制listctrl.
    毕竟ListCtrl只是一个显示数据的容器。说的可能不太明白,意思到了就行。:)