I have created a Dialog which it's derived from CDialog (MFC does this automatically), but I had to override the OnInitDialog
method to make initialization of a ComboBox:
BOOL CLogin::OnInitDialog()
{
CDialog::OnInitDialog();
InitCommonControls();
if ( FillInCombo() != 0 )
//erro ao tentar ler leitoras
return TRUE;
return TRUE;
}
The method FillInCombo
calls a PCSC class to fill this combo with all available smart card readers.
However, while debugging a strange behavior takes place. While attempting to select an item on the combo, it closes automatically (it actually generates an OnClose event) and DoModal returns -1.
Then, next, the application is never again loaded correctly unless I clean the solutions and build it again.
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;
};
Thanks for any possible help on this.
LATER EDIT: I realized the problem arises because of the combobox. I am not sure why. I replaced it by a ListBox and I am not getting troubles.
I suspect some thing goes wrong in your OnInitDialog().
I suggest you to go for debug steps:
a) remove InitCommonControls() in OnInitDialog()
b) remove FillInCombo() in OnInitDialog()
c) remove InitCommonControls() and FillInCombo() in OnInitDialog()
After removing one by one, check with the DoModal returns value.
I think you're doing InitCommonControls()
in the wrong place. This should be done once in your program. It initializes the common controls library. Not the controls on your dialog themselves.
I typically put this in the app's startup routine, before bringing any windows up.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.