Как обращаться с клавишей Ctrl + shift+A в sdi mfc


Я новичок в vc++.Как обращаться с клавишей Ctrl + shift+A в sdi mfc. Для ctrl + код работает нормально.

case _T('A'): 

     if(GetKeyState(VK_CONTROL) & 0x8000){
         MessageBox(_T("Key Ctrl+A is pressed"));
     }
     else if((GetKeyState(VK_CONTROL) & 0x8000)&&(GetKeyState(VK_SHIFT) & 0x8000)){
         MessageBox(_T("Key Ctrl+Shift+A is pressed"));
     }

    break;
1 2

1 ответ:

Ваше первое if-предложение истинно, независимо от того, нажата ли клавиша Shift, поэтому вы никогда не достигнете else-предложения. Если вы измените порядок ваших утверждений, вы получите оба:

case _T( 'A' ): 
    if ( ( GetKeyState( VK_CONTROL ) < 0 ) && ( GetKeyState( VK_SHIFT ) < 0 ) {
        MessageBox( _T( "Key Ctrl+Shift+A is pressed" ) );
    } else if ( GetKeyState( VK_CONTROL ) < 0 ) {
        MessageBox( _T( "Key Ctrl+A is pressed" ) );
    }
    break;

Если вы хотите обрабатывать нажатия клавиш глобально, вы можете использоватьускорители клавиатуры вместо этого. Самый простой способ настроить ускорители - это использовать ресурс ускорителей .