⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            break;        case kEnterCharCode :            retval = WXK_RETURN;            break;        case kEndCharCode :            retval = WXK_END;            break;        case kHelpCharCode :            retval = WXK_HELP;            break;        case kBackspaceCharCode :            retval = WXK_BACK;            break;        case kTabCharCode :            retval = WXK_TAB;            break;        case kPageUpCharCode :            retval = WXK_PAGEUP;            break;        case kPageDownCharCode :            retval = WXK_PAGEDOWN;            break;        case kReturnCharCode :            retval = WXK_RETURN;            break;        case kFunctionKeyCharCode :        {            switch ( code )            {                case 0x7a :                    retval = WXK_F1 ;                    break;                case 0x78 :                    retval = WXK_F2 ;                    break;                case 0x63 :                    retval = WXK_F3 ;                    break;                case 0x76 :                    retval = WXK_F4 ;                    break;                case 0x60 :                    retval = WXK_F5 ;                    break;                case 0x61 :                    retval = WXK_F6 ;                    break;                case 0x62:                    retval = WXK_F7 ;                    break;                case 0x64 :                    retval = WXK_F8 ;                    break;                case 0x65 :                    retval = WXK_F9 ;                    break;                case 0x6D :                    retval = WXK_F10 ;                    break;                case 0x67 :                    retval = WXK_F11 ;                    break;                case 0x6F :                    retval = WXK_F12 ;                    break;                case 0x69 :                    retval = WXK_F13 ;                    break;                case 0x6B :                    retval = WXK_F14 ;                    break;                case 0x71 :                    retval = WXK_F15 ;                    break;                default:                    break;            }        }        break ;        case kEscapeCharCode :            retval = WXK_ESCAPE ;            break ;        case kLeftArrowCharCode :            retval = WXK_LEFT ;            break ;        case kRightArrowCharCode :            retval = WXK_RIGHT ;            break ;        case kUpArrowCharCode :            retval = WXK_UP ;            break ;        case kDownArrowCharCode :            retval = WXK_DOWN ;            break ;        case kDeleteCharCode :            retval = WXK_DELETE ;            break ;        default:            break ;     } // end switch    return retval;}int wxMacKeyCodeToModifier(wxKeyCode key){    switch (key)    {    case WXK_START:    case WXK_MENU:        return cmdKey;    case WXK_SHIFT:        return shiftKey;    case WXK_CAPITAL:        return alphaLock;    case WXK_ALT:        return optionKey;    case WXK_CONTROL:        return controlKey;    default:        return 0;    }}#ifndef __DARWIN__bool wxGetKeyState(wxKeyCode key) //virtual key code if < 10.2.x, else see below{    wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key !=        WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons"));//if OS X > 10.2 (i.e. 10.2.x)//a known apple bug prevents the system from determining led//states with GetKeys... can only determine caps lock led     return !!(GetCurrentKeyModifiers() & wxMacKeyCodeToModifier(key));//else//  KeyMapByteArray keymap;//  GetKeys((BigEndianLong*)keymap);//  return !!(BitTst(keymap, (sizeof(KeyMapByteArray)*8) - iKey));}#endifwxMouseState wxGetMouseState(){    wxMouseState ms;    wxPoint pt = wxGetMousePosition();    ms.SetX(pt.x);    ms.SetY(pt.y);#if TARGET_API_MAC_OSX    UInt32 buttons = GetCurrentButtonState();    ms.SetLeftDown( (buttons & 0x01) != 0 );    ms.SetMiddleDown( (buttons & 0x04) != 0 );    ms.SetRightDown( (buttons & 0x02) != 0 );#else    ms.SetLeftDown( Button() );    ms.SetMiddleDown( 0 );    ms.SetRightDown( 0 );#endif    UInt32 modifiers = GetCurrentKeyModifiers();    ms.SetControlDown(modifiers & controlKey);    ms.SetShiftDown(modifiers & shiftKey);    ms.SetAltDown(modifiers & optionKey);    ms.SetMetaDown(modifiers & cmdKey);    return ms;}// TODO : once the new key/char handling is tested, move all the code to wxWindowbool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ){    if ( !focus )        return false ;    bool handled;    wxKeyEvent event(wxEVT_KEY_DOWN) ;    MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;    handled = focus->GetEventHandler()->ProcessEvent( event ) ;    if ( handled && event.GetSkipped() )        handled = false ;#if wxUSE_ACCEL    if ( !handled )    {        wxWindow *ancestor = focus;        while (ancestor)        {            int command = ancestor->GetAcceleratorTable()->GetCommand( event );            if (command != -1)            {                wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );                handled = ancestor->GetEventHandler()->ProcessEvent( command_event );                break;            }            if (ancestor->IsTopLevel())                break;            ancestor = ancestor->GetParent();        }    }#endif // wxUSE_ACCEL    return handled ;}bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ){    if ( !focus )        return false ;    bool handled;    wxKeyEvent event( wxEVT_KEY_UP ) ;    MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;    handled = focus->GetEventHandler()->ProcessEvent( event ) ;    return handled ;}bool wxApp::MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ){    if ( !focus )        return false ;    wxKeyEvent event(wxEVT_CHAR) ;    MacCreateKeyEvent( event, focus , keymessage , modifiers , when , wherex , wherey , uniChar ) ;    long keyval = event.m_keyCode ;    bool handled = false ;    wxTopLevelWindowMac *tlw = focus->MacGetTopLevelWindow() ;    if (tlw)    {        event.SetEventType( wxEVT_CHAR_HOOK );        handled = tlw->GetEventHandler()->ProcessEvent( event );        if ( handled && event.GetSkipped() )            handled = false ;    }    if ( !handled )    {        event.SetEventType( wxEVT_CHAR );        event.Skip( false ) ;        handled = focus->GetEventHandler()->ProcessEvent( event ) ;    }    if ( !handled && (keyval == WXK_TAB) )    {        wxWindow* iter = focus->GetParent() ;        while ( iter && !handled )        {            if ( iter->HasFlag( wxTAB_TRAVERSAL ) )            {                wxNavigationKeyEvent new_event;                new_event.SetEventObject( focus );                new_event.SetDirection( !event.ShiftDown() );                /* CTRL-TAB changes the (parent) window, i.e. switch notebook page */                new_event.SetWindowChange( event.ControlDown() );                new_event.SetCurrentFocus( focus );                handled = focus->GetParent()->GetEventHandler()->ProcessEvent( new_event );                if ( handled && new_event.GetSkipped() )                    handled = false ;            }            iter = iter->GetParent() ;        }    }    // backdoor handler for default return and command escape    if ( !handled && (!focus->IsKindOf(CLASSINFO(wxControl) ) || !focus->MacCanFocus() ) )    {        // if window is not having a focus still testing for default enter or cancel        // TODO: add the UMA version for ActiveNonFloatingWindow        wxWindow* focus = wxFindWinFromMacWindow( FrontWindow() ) ;        if ( focus )        {            if ( keyval == WXK_RETURN )            {                wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(focus), wxTopLevelWindow);                if ( tlw && tlw->GetDefaultItem() )                {                    wxButton *def = wxDynamicCast(tlw->GetDefaultItem(), wxButton);                    if ( def && def->IsEnabled() )                    {                        wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, def->GetId() );                        event.SetEventObject(def);                        def->Command(event);                        return true ;                    }                }            }            else if (keyval == WXK_ESCAPE || (keyval == '.' && modifiers & cmdKey ) )            {                // generate wxID_CANCEL if command-. or <esc> has been pressed (typically in dialogs)                wxCommandEvent new_event(wxEVT_COMMAND_BUTTON_CLICKED,wxID_CANCEL);                new_event.SetEventObject( focus );                handled = focus->GetEventHandler()->ProcessEvent( new_event );            }        }    }    return handled ;}// This method handles common code for SendKeyDown, SendKeyUp, and SendChar events.void wxApp::MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ){    short keycode, keychar ;    keychar = short(keymessage & charCodeMask);    keycode = short(keymessage & keyCodeMask) >> 8 ;    if ( !(event.GetEventType() == wxEVT_CHAR) && (modifiers & (controlKey | shiftKey | optionKey) ) )    {        // control interferes with some built-in keys like pgdown, return etc. therefore we remove the controlKey modifier        // and look at the character after        UInt32 state = 0;        UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey | shiftKey | optionKey))) | keycode, &state);        keychar = short(keyInfo & charCodeMask);    }    long keyval = wxMacTranslateKey(keychar, keycode) ;    if ( keyval == keychar && ( event.GetEventType() == wxEVT_KEY_UP || event.GetEventType() == wxEVT_KEY_DOWN ) )        keyval = wxToupper( keyval ) ;    // Check for NUMPAD keys    if (keyval >= '0' && keyval <= '9' && keycode >= 82 && keycode <= 92)    {        keyval = (keyval - '0') + WXK_NUMPAD0;    }    else if (keycode >= 67 && keycode <= 81)    {        switch (keycode)        {        case 76 :            keyval = WXK_NUMPAD_ENTER;            break;        case 81:            keyval = WXK_NUMPAD_EQUAL;            break;        case 67:            keyval = WXK_NUMPAD_MULTIPLY;            break;        case 75:            keyval = WXK_NUMPAD_DIVIDE;            break;        case 78:            keyval = WXK_NUMPAD_SUBTRACT;            break;        case 69:            keyval = WXK_NUMPAD_ADD;            break;        case 65:            keyval = WXK_NUMPAD_DECIMAL;            break;        default:            break;        } // end switch    }    event.m_shiftDown = modifiers & shiftKey;    event.m_controlDown = modifiers & controlKey;    event.m_altDown = modifiers & optionKey;    event.m_metaDown = modifiers & cmdKey;    event.m_keyCode = keyval ;#if wxUSE_UNICODE    event.m_uniChar = uniChar ;#endif    event.m_rawCode = keymessage;    event.m_rawFlags = modifiers;    event.m_x = wherex;    event.m_y = wherey;    event.SetTimestamp(when);    event.SetEventObject(focus);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -