Re: MFC dialog disapears when doing ShowWindow(SW_MINIMIZE)
Kind of a weird one, but perhaps you could try not calling the function
ToggleApplicationSelectionInfo() since that is hiding windows. Maybe
something going screwy in there. Also, you may want to consider not naming
your parameter SW_CODE. I know it's a valid name, but it looks so much
like SW_SOMETHING else, that it is confusing (at least it was to me). That
won't fix anything, but it would make it easier for someone else to read if
you had something like (int nShowOption) in my opinion.
Also, you should check the response from GetDlgItem() before using it to
make sure it didn't return a NULL (or not use it at all and assign control
variables instead. I don't think this is the problem, but you never know
what is getting returned from GetDlgItem()
Those are things I'd try to see if you can figure out what is happening.
Tom
<j.lantz.bcn@gmail.com> wrote in message
news:0cf2d614-3b19-42b7-b343-b90578578d55@x38g2000yqj.googlegroups.com...
Here is some code, I cut some some parts but all MFC stuff is there:
//Called when clicking Reconnect button
void myDlg::OnBnClickedButtonReconnect()
{
StartReconnectStatusThread();
if(ConnectToLastUsedDevice())
{
StopReconnectStatusThread();
ConnectionCompleted();
}
}
//Called when clicking start wizard button, the pairing guide will
show 3 other modal dialogs and finally return TRUE or FALSE
void myDlg::OnBnClickedButtonStartWizard()
{
this->ShowWindow(SW_SHOWMINIMIZED);
if(RunPairingGuide())
{
ConnectionCompleted();
}
else
{
ConnectionFailed();
}
//This is a thread just showing a "splash" screen that we are trying
to reconnect. Upon success this is terminated
void myDlg::ShowReconnectionStatus()
{
//Display the reconnect status dlg
ReconStatusDlg myReconStatusDlg;
myReconStatusDlg.Create(IDD_RECON_STATUS);
DWORD res = WaitForSingleObject(h_WaitForReconnect,10000);
myReconStatusDlg.OnBnClickedCancel(); //remove the status Dlg
}
//This is the function called both when reconnecting and running the
wizard. Ok result when wizard has run failing after reconnect.
void myDlg::ConnectionCompleted()
{
ToggleApplicationSelectionInfo(SW_SHOW); //show or hide some
controls
PrintStaticMessage(IDC_STATIC_WELCOME_MSG, "Welcome", HEADLINE);
PrintStaticMessage(IDC_STATIC_HP_RECONNECT_INFO, message,
STANDARD_FONT);
CButton* myButton = (CButton*)GetDlgItem(IDC_BUTTON_START_WIZARD);
myButton->EnableWindow(false);
myButton = (CButton*)GetDlgItem(IDC_BUTTON_RECONNECT);
myButton->EnableWindow(false);
myButton = (CButton*)GetDlgItem(IDC_BUTTON_ADD);
myButton->EnableWindow(false);
CStatic* myStatic = (CStatic*)GetDlgItem(IDC_STATIC_SELECT_APP);
myStatic->EnableWindow(false);
CListBox* myLB = (CListBox*)GetDlgItem(IDC_APPNAME_LISTBOX);
myLB->EnableWindow(false);
this->ShowWindow(SW_MINIMIZE);
::FlashWindow(GetHwnd(),true); //Flash once to show user where the
window went
}
//Helper function will take SW_HIDE or SW_SHOW as inparameter but
should only affect specific controls
void myDlg::ToggleApplicationSelectionInfo(int SW_CODE)
{
CWnd* myWnd;
myWnd = (CWnd*)GetDlgItem(IDC_APPNAME_LISTBOX);
myWnd->ShowWindow(SW_CODE);
myWnd = (CWnd*)GetDlgItem(IDC_STATIC_SELECT_APP);
myWnd->ShowWindow(SW_CODE);
myWnd = (CWnd*)GetDlgItem(IDC_BUTTON_ADD);
myWnd->ShowWindow(SW_CODE);
}