We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

CFileDialog w/ template but default button not working

leow060498
leow060498 asked
on
Medium Priority
485 Views
Last Modified: 2013-11-19
I have a customized CFileDialog (e.g. CCustFileDialog) with a child dialog template. Everything is working fine except that now I want the default button change to one of the button in my child template (e.g. IDOK1).

Here is the code I tried but failed:

void CCustFileDialog::OnInitDone()
{
     // Set default button

     GetParent()->SetDefID(IDOK1);
     ((CButton*)GetParent()->GetDlgItem(IDOK))->SetButtonStyle(BS_PUSHBUTTON);
     SendDlgItemMessage(IDOK1, BM_SETSTYLE, BS_DEFPUSHBUTTON, MAKELPARAM(TRUE, 0));
}

Any one can help?
Comment
Watch Question

Commented:
Try sending a DM_SETDEFID message as well.

Author

Commented:
Well if you look at DevStudio\VC\mfc\include\AFXWIN2.INL(570):

_AFXWIN_INLINE void CDialog::SetDefID(UINT nID)
      { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, DM_SETDEFID, nID, 0); }

The call of SetDefID() is sending a DM_SETDEFID....

Author

Commented:
Try to open WinZip with an existing file and Add. You can see that it is using the CFileDialog with some buttons underneath. If you press enter on some of them, you got nothing.

Commented:
Is CCustFileDialog derived from CFileDialog? Why do you use GetParent()?

It should be

void CCustFileDialog::OnInitDone()
{
     // Set default button

     this->SetDefID(IDOK1);
}

If this still does not work, try the following:

1. Define a user-defined message;
2. Post the user-defined message in CCustFileDialog::OnInitDone() by using this->PostMessage;
3. When CCustFileDialog receives this message, call this->SetDefID(IDOK1);.

Author

Commented:
No luck with this->SetDefID() and the PostMessage() also.

The way to set the default button to a child dialog is not mentioned clearly in the documentation.

Commented:
How about setting the Default Button style in the Dialog Editor?
Unlock this solution with a free trial preview.
(No credit card required)
Get Preview
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a free trial preview!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.