OzB*_*rry 2 winapi mfc ccombobox combobox
我在MFC项目的MSVC 2010专业版的gui编辑器中添加了一个组合框.我有一个我从外部源获取的字符串列表,并希望将它们添加到我的组合框中.我搜索了一段时间,每个帖子似乎都暗示我需要使用CComboBox类,但是,我不知道如何从gui编辑器中的组合框元素的资源ID获取类变量.
总之,如何使用宏(如CB_ADDSTRING(RESOURCE_ID, "my string");)或使用CComboBOx(类似的东西CComboBox::GetObject(RESOURCE_ID)->AddString("blah");)将字符串添加到我的组合框中.
我没有做很多win32 api/mfc编程,只是开始摆弄它.
satuon的答案是win32的做事方式.如果你想要更多MFC路线,请继续阅读.
如果只有少数,您可以使用组合的"数据"属性直接在资源编辑器中添加字符串.
如果没有,那么您需要在运行时获取组合.资源编辑器将为您提供组合资源ID(例如IDC_COMBO1),因此您可以使用它来从对话框类中获取组合:
BOOL CcombotestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    ((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("MyString");
}
注意你必须强制转换CComboBox,因为GetDlgItem()可以用来获得任何类型的子控件.
如果您要使用组合很多,可能值得在对话框类中添加一个专用成员.您可以使用Visual Studio向导执行此操作.
如果您现在查看.h文件,您将看到一个新成员:
CComboBox m_myCombo;
MFC可以为您安装,DoDataExchange()因此您无需担心.您现在可以在任何地方使用此成员来操纵您的组合.例如.
BOOL CcombotestDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    m_MyCombo.AddString("MyString");
}