Как получить текст горячей клавиши?
03.06.2004
|
Odi$$ey |
Здравствуйте, Carc, Вы писали:
C>Как получить текст горячей клавиши?
C>Т.е. я юзую какую нить к примеру Ctrl+A у себя в приложении, причем есессно клавиша может меняться пользователем, как мне получить текст который отображать в меню (типа какой нить "Ctrl+A"), пробовал тот же GetKeyName но что я не смог разобраться.... хелп
посмотреть исходники MFC-шного CHotKeyCtrl::GetHotKeyName():
C>Как получить текст горячей клавиши?
C>Т.е. я юзую какую нить к примеру Ctrl+A у себя в приложении, причем есессно клавиша может меняться пользователем, как мне получить текст который отображать в меню (типа какой нить "Ctrl+A"), пробовал тот же GetKeyName но что я не смог разобраться.... хелп
посмотреть исходники MFC-шного CHotKeyCtrl::GetHotKeyName():
CString GetKeyName( UINT vk, BOOL fExtended )
{
LONG lScan = MapVirtualKey( vk, 0 ) << 16;
// if it's an extended key, add the extended flag
if ( fExtended )
lScan |= 0x01000000L;
TCHAR sz[ 100 ];
::GetKeyNameText( lScan, sz, 100 );
sz[ 99 ] = 0;
return CString( sz );
}
CString GetHotKeyName( DWORD hk )
{
static const TCHAR szPlus[] = _T( " + " );
CString strKeyName;
WORD wCode;
WORD wModifiers;
wCode = LOBYTE( LOWORD( hk ) );
wModifiers = HIBYTE( LOWORD( hk ) );
if ( wCode != 0 || wModifiers != 0 )
{
if ( wModifiers & HOTKEYF_CONTROL )
{
strKeyName += GetKeyName( VK_CONTROL, FALSE );
strKeyName += szPlus;
}
if ( wModifiers & HOTKEYF_SHIFT )
{
strKeyName += GetKeyName( VK_SHIFT, FALSE );
strKeyName += szPlus;
}
if ( wModifiers & HOTKEYF_ALT )
{
strKeyName += GetKeyName( VK_MENU, FALSE );
strKeyName += szPlus;
}
strKeyName += GetKeyName( wCode, wModifiers & HOTKEYF_EXT );
}
return strKeyName;
}
03.06.2004 0 комментариев |