Article: Q148388
Product(s): Microsoft C Compiler
Version(s): winnt:4.0
Operating System(s):
Keyword(s): kbcode kbCtrl kbMFC KbUIDesign kbVC kbVC400 kbGrpDSMFCATL kbNoUpdate
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), included with:
- Microsoft Visual C++, 32-bit Editions, version 4.0
-------------------------------------------------------------------------------
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.
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.
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;
}
Additional query words: kbinf 4.00 CPropertySheet
======================================================================
Keywords : kbcode kbCtrl kbMFC KbUIDesign kbVC kbVC400 kbGrpDSMFCATL kbNoUpdate
Technology : kbAudDeveloper kbMFC
Version : winnt:4.0
Issue type : kbhowto
=============================================================================