我正在尝试初始化一个包含CListBox的CDialog框。我想通过在CDialogBox上调用DoModal来做到这一点。但是问题是,当我调用DoModal时,会打开对话框,但CListBox是EMPTY。 (其项目已初始化) 当我调用ShowWindow(SW_SHOW)时,对话框也会显示,并且CListBox包含我插入其中的项目。但是,我不想使用此方法,因为它不会暂停程序的执行。 (DoModal暂停程序执行直到窗口关闭)
所以我的问题是:如何使用DoModal打开对话框,让CListBox显示其内容? 非常感谢。
初始化CDialog子类,并调用start(打开对话框)
loadNewWorld = new LoadNewWorld(this);
loadNewWorld->Create(IDD_LOAD_NEW_WORLD , this);
loadNewWorld->Start();
LoadNewWorld类:
//Constructor header
LoadNewWorld::LoadNewWorld(CWnd* pParent /*=NULL*/) : CDialog(LoadNewWorld::IDD, pParent)
//This shows the dialog box, but does NOT show the items in CListBox
void LoadNewWorld::Start ()
{
populateList();
DoModal();
}
//This shows the dialog box AND shows the populated CListBox. However, don't want to do this way
void LoadNewWorld::Start ()
{
populateList();
ShowWindow(SW_SHOW);
}
答案 0 :(得分:2)
在Dialog启动并创建时填充列表视图。
未创建对话框时,无法填充列表框。最好的地方是OnInitDialog。您的问题是您希望在创建列表框之前(在调用DoModal之前)填充列表框。
正如笔记已经告诉你的那样:你不能混合DoModal和Create。