gpt4 book ai didi

c++ - 从 CDialog 派生的 Dialog 在 DoModal (MFC/C++) 之后返回 -1

转载 作者:行者123 更新时间:2023-11-28 03:53:20 24 4
gpt4 key购买 nike

我创建了一个派生自 CDialog 的对话框(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com