Help and Support
 

powered byLive Search

HOWTO: How to Change Default Control Focus on CPropertyPage

Retired KB ArticleThis article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Article ID:148388
Last Review:November 21, 2006
Revision:2.1
This article was previously published under Q148388
On This Page

SUMMARY

When a CPropertyPage is activated, the first control in the page's tab order will get the focus by default. To change the default to a different control, derive a class from CPropertyPage, override OnSetActive(), and post a user message to a member function that will actually set the focus to the desired control.

Back to the top

MORE INFORMATION

CPropertySheet's member function OnSetActive() is called when a PSN_SETACTIVE message is sent to that page. Attempting to set the focus to a control while in this handler won't produce the expected results because after this notification is handled, the tab control will get the focus.

Therefore, you need to post a message to the property sheet's message queue with a user message in order to set the focus to the desired control once the page is active.

Back to the top

Sample Code

// this is the user-defined message
#define WM_SETPAGEFOCUS WM_APP+2
BEGIN_MESSAGE_MAP(CMyPage, CPropertyPage)
  ON_MESSAGE(WM_SETPAGEFOCUS, OnSetPageFocus)
END_MESSAGE_MAP()

BOOL CMyPage::OnSetActive()
{
  BOOL fRet = CPropertyPage::OnSetActive();

  PostMessage(WM_SETPAGEFOCUS, 0, 0L);

  return fRet;
}

LONG CMyPage::OnSetPageFocus(UINT wParam, LONG lParam)
{
  // IDC_BUTTON2 is the button on this property page
  // that you want to give the default focus.

  CButton* pBtn = (CButton*)GetDlgItem(IDC_BUTTON2);
  ASSERT(pBtn);
  pBtn->SetFocus();
  return 0;
}
				

Back to the top


APPLIES TO
Microsoft Foundation Class Library 4.2, when used with:
  Microsoft Visual C++ 4.0 Standard Edition

Back to the top

Keywords: 
kbcode kbctrl kbhowto kbnoupdate kbuidesign KB148388

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by E-mail, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.