This is a update from the article ‘Using Shortcut Keys for Property Pages’ from Zafir Anjum. The article only handled
Uppercase shortcuts, here is one that handle both upper and lowercase shortcut keys.
You need to implement the following procedure to do the work:
BOOL CBasePropertySheet::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_SYSKEYDOWN && pMsg->wParam > 32 ) { CTabCtrl *pTab = GetTabControl(); int n = pTab->GetItemCount(); TCHAR buf[80], shortcut1[3], shortcut2[3]; TC_ITEM tcItem; tcItem.mask = TCIF_TEXT; tcItem.pszText = buf; shortcut2[0] = shortcut1[0] = _T('&'); shortcut2[2] = shortcut1[2] = _T(' '); for( int i = 0; i < n; i++ ) { tcItem.cchTextMax = 79; pTab->GetItem( i, &tcItem ); shortcut1[1] = _totupper((TCHAR) pMsg->wParam); shortcut2[1] = _totlower((TCHAR) pMsg->wParam); if( _tcsstr( buf, shortcut1 ) || _tcsstr( buf, shortcut2 ) ) { SetActivePage( i ); return TRUE; } } } return CPropertySheet::PreTranslateMessage(pMsg); }
Date Posted: 08/13/98