作为一个初学者,我记录下今天遇到的一个小问题。
1.class captureDg : public CDialog
{
DECLARE_DYNAMIC(captureDg)
public:
captureDg(CWnd* pParent = NULL); // 标准构造函数
virtual ~captureDg();
// 对话框数据
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
CListCtrl clc;
};
captureDg::captureDg(CWnd* pParent /*=NULL*/)
: CDialog(captureDg::IDD, pParent)
{
clc.InsertColumn(0,L"haha", LVCFMT_LEFT, 60);
}
把对控件的初始化放在构造函数里,你会发现clc的任何函数都不能用。这是因为控件实在生成对话框对象后才有的,把控件的初始化放在构造函数里无疑是错误的解决办法可以是:将初始化代码放到oninit 函数里面,oninit函数是CDialog的virtual函数,在captureDg中重写。如下所示:
BOOL captureDg::OnInitDialog(){
CDialog::OnInitDialog();
初始内容。。。。
return true;
}
2第二个导致这个问题的原因可能是listControl控件的属性View没有设置成report。