Я новичок в области MFC. Читаю книжку и натолкнулся на непонятное явление.
имеем класс диалога, автоматом сгенеренный студией (на основе ресурса):
class rrr : public CDialog
{
DECLARE_DYNAMIC(rrr)
public:
rrr(CWnd* pParent = NULL); // standard constructor
virtual ~rrr();
// Dialog Data
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
CString m_val;
CComboBox m_cb;
};
на самом диалоге находятся Edit и ComboBox
для них созданы переменные m_val и m_cb
в обработчике основного окна:
void cMyWnd::OnLButtonDown(UINT, CPoint)
{
rrr tmprr(this);
tmprr.m_val = "текст1";
tmprr.m_cb.AddString("текст2"); // !!! Здесь студия выдает ошибку ассерта
tmprr.DoModal();
};
собственно в результате в диалоге в Edit находится "текст1", а ComboBox — пустой. Вопрос: почему он пустой? как тогда передавать значения для ComboBox снаружи?
PS студия 2008
rrr tmprr(this);
tmprr.m_val = "текст1";
tmprr.m_cb.AddString("текст2"); // !!! Здесь студия выдает ошибку ассерта
//судя по всему, окна то CComboBox еще нет, также как и самого диалога, а пытаемся уже положить в окно какой-то текст
tmprr.DoModal();//вот как раз тут и создается видимо диалог
Попробуйте вызывать AddString в OnInitDialog, тогда уже и будет существовать окно ComboBox`а