我创建了一个从CDialog派生的Dialog(MFC自动执行此操作),但是我必须重写OnInitDialog
方法来初始化ComboBox:
BOOL CLogin::OnInitDialog()
{
CDialog::OnInitDialog();
InitCommonControls();
if ( FillInCombo() != 0 )
//erro ao tentar ler leitoras
return TRUE;
return TRUE;
}
方法
FillInCombo
调用PCSC类,以用所有可用的智能卡读取器填充此组合。但是,在调试时会发生奇怪的行为。尝试在组合上选择一个项目时,它会自动关闭(实际上会生成一个OnClose事件),并且DoModal返回-1。
然后,接下来,除非我清理解决方案并重新构建,否则再也不会正确加载应用程序。
CLogin SmartNetData;
int ret = SmartNetData.DoModal();
switch ( ret )
{
case IDOK:
break;
case -1:
// strange error
OnOK();
return TRUE;
case IDABORT:
case IDCANCEL:
OnOK();
return TRUE;
};
感谢您对此的任何可能的帮助。
稍后编辑:我意识到问题是由于组合框而引起的。我不知道为什么。我用ListBox代替了它,但没有遇到麻烦。
最佳答案
我怀疑您的OnInitDialog()中出了点问题。
我建议您去调试步骤:
a)在OnInitDialog()中删除InitCommonControls()
b)在OnInitDialog()中删除FillInCombo()
c)在OnInitDialog()中删除InitCommonControls()和FillInCombo()
一一删除后,检查DoModal返回值。
关于c++ - 从CDialog派生的Dialog在DoModal(MFC/C++)之后返回-1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4659062/