给组合框设个焦点也产生bug,这代码昨天还好使呢!该怎么处理
给组合框设个焦点也产生bug,这代码昨天还好使呢!!
------解决方案--------------------
在OnInitDialog中调用CreateComboBox的时候gridlist有几行数据?
从你代码上看OnInitDialog时gridlist中是没有数据的,此时调用GetSubItemRect应该会报错的
- C/C++ code
#ifndef CMyCListCtrl_H #define CMyCListCtrl_H __declspec(dllimport) #endif class CMyCListCtrl_H CMyCListCtrl : public CListCtrl { public: void CreateComboBox(UINT Row, UINT Col); CMyComboBox b; };
- C/C++ code
#ifndef CMyComboBox_H #define CMyComboBox_H __declspec(dllimport) #endif class CMyComboBox_H CMyComboBox : public CComboBox { //。。。。 };
- C/C++ code
void CMyCListCtrl::CreateComboBox(UINT Row, UINT Col) { CRect r; b.Create(WS_CHILD | WS_VISIBLE | CBS_DROPDOWN, r, this, 1); this->GetSubItemRect(Row, Col, LVIR_LABEL, r); r.bottom = r.bottom + 300; b.MoveWindow(r); }
- C/C++ code
class CSDIDlg : public CDialog { virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 CMyCListCtrl gridlist; } void CSDIDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, gridlist); } BOOL CSDIDlg::OnInitDialog() { CDialog::OnInitDialog(); gridlist.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT ); gridlist.CreateComboBox(0,1); gridlist.b.SetFocus(); return FALSE; }
------解决方案--------------------
在OnInitDialog中调用CreateComboBox的时候gridlist有几行数据?
从你代码上看OnInitDialog时gridlist中是没有数据的,此时调用GetSubItemRect应该会报错的