| Как получить текст горячей клавиши?
					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 комментариев | 
