boolean StringBrowser::HandleKeyEvent (Event& e) { boolean done = false; if (e.len != 0) { done = HandleChar(e.keystring[0]); } return done; }
boolean ClassEditor::HandleKeyEvent (Event& e) { boolean done = false; if (e.len != 0) { done = HandleChar(e.keystring[0]); } return done; }
LRESULT CALLBACK RingsWndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HDC hdc; PAINTSTRUCT ps; HCURSOR hCursor; switch( msg ) { // case WM_CREATE: // return NULL; case WM_CHAR: HandleChar( hwnd, wParam ); return 0; case WM_PAINT: hCursor = SetCursor( LoadCursor( NULL, MAKEINTRESOURCE(IDC_WAIT) ) ); ShowCursor( TRUE ); //ClearDebug(); //dprintf( "Drawing rings" ); hdc = BeginPaint( hwnd, &ps ); SetDCMapMode( hdc, wMappingMode ); SetTextCharacterExtra( hdc, nCharExtra ); SetTextJustification( hdc, nBreakExtra, nBreakCount ); DrawDCAxis( hwnd, hdc ); DrawRings( hwnd, hdc ); CleanUpDC( hdc ); SelectObject( hdc, GetStockObject( BLACK_PEN ) ); EndPaint( hwnd, &ps ); //dprintf( " Finished drawing rings" ); ShowCursor( FALSE ); SetCursor( hCursor ); return 0; case WM_DESTROY: return 0; } return DefWindowProc( hwnd, msg, wParam, lParam ); }
bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam) { switch ( msg ) { case WM_CHAR: // for compatibility with wxTextCtrl, generate a special message // when Enter is pressed if ( wParam == VK_RETURN ) { if (SendMessage(GetHwnd(), CB_GETDROPPEDSTATE, 0, 0)) return false; wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); const int sel = GetSelection(); event.SetInt(sel); event.SetString(GetValue()); InitCommandEventWithItems(event, sel); if ( ProcessCommand(event) ) { // don't let the event through to the native control // because it doesn't need it and may generate an annoying // beep if it gets it return true; } } // fall through case WM_SYSCHAR: return HandleChar(wParam, lParam); case WM_SYSKEYDOWN: case WM_KEYDOWN: return HandleKeyDown(wParam, lParam); case WM_SYSKEYUP: case WM_KEYUP: return HandleKeyUp(wParam, lParam); case WM_SETFOCUS: return HandleSetFocus((WXHWND)wParam); case WM_KILLFOCUS: return HandleKillFocus((WXHWND)wParam); case WM_CUT: case WM_COPY: case WM_PASTE: return HandleClipboardEvent(msg); } return false; }
void Status_OnKeyDown(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { if (!HandleMsg(wParam,lParam)) //该按键盘不需要处理 { return ; } if (wParam == VK_BACK) { HandleBack(); } else if (wParam == VK_SPACE) { HandleSpace(); } //小键盘 else if (wParam >= VK_NUMPAD4 && wParam <= VK_NUMPAD9 && wParam != VK_NUMPAD6) { Handle_Small_Num(wParam); } // 0 - 9 else if (wParam >= 0x30 && wParam <= 0x39) { HandleNum(wParam,lParam); } // A - Z else if (wParam >= 0x41 && wParam <= 0x5A) { HandleChar(wParam,lParam); } else if (wParam == VK_CONTROL) { HandleControl(); } //上翻页 else if (wParam == VK_LEFT) { } //下翻 else if (wParam == VK_RIGHT) { } }
bool FieldStringEditor::keystroke(const Event& e) { unsigned long keysym = e.keysym(); switch(keysym) { case XK_Right: Select(text->NextCharacter(right)); break; case XK_Left: Select(text->PreviousCharacter(left)); break; case XK_Home: Select(text->BeginningOfLine(left)); break; case XK_End: Select(text->EndOfLine(right)); break; } char c; return e.mapkey(&c, 1) != 0 && HandleChar(c) && c == '\t'; }
bool wxComboBox::ProcessEditMsg( WXUINT uMsg , WXWPARAM wParam , WXLPARAM lParam) { SHORT vFlag; switch (uMsg) { case WM_CHAR: vFlag = SHORT1FROMMP(wParam); switch(vFlag) { case KC_CHAR: return (HandleChar( wParam ,lParam ,true /* isASCII */ )); case KC_PREVDOWN: return (HandleKeyDown( wParam ,lParam )); case KC_KEYUP: return (HandleKeyUp( wParam ,lParam )); } break; case WM_SETFOCUS: if (SHORT1FROMMP((MPARAM)lParam) == TRUE) return(HandleSetFocus((WXHWND)(HWND)wParam)); else return(HandleKillFocus((WXHWND)(HWND)wParam)); break; } return false; } // end of WinGuiBase_CComboBox::ProcessEditMsg
wxScopedCharTypeBuffer<CharType> Convert(const CharType *format) { // this is reset to NULL if we modify the format string m_fmtOrig = format; while ( *format ) { if ( CopyFmtChar(*format++) == wxT('%') ) { // skip any flags while ( IsFlagChar(*format) ) CopyFmtChar(*format++); // and possible width if ( *format == wxT('*') ) CopyFmtChar(*format++); else SkipDigits(&format); // precision? if ( *format == wxT('.') ) { CopyFmtChar(*format++); if ( *format == wxT('*') ) CopyFmtChar(*format++); else SkipDigits(&format); } // next we can have a size modifier SizeModifier size; switch ( *format ) { case 'h': size = Size_Short; format++; break; case 'l': // "ll" has a different meaning! if ( format[1] != 'l' ) { size = Size_Long; format++; break; } //else: fall through default: size = Size_Default; } CharType outConv = *format; SizeModifier outSize = size; // and finally we should have the type switch ( *format ) { case wxT('S'): case wxT('s'): // all strings were converted into the same form by // wxArgNormalizer<T>, this form depends on the context // in which the value is used (scanf/printf/wprintf): HandleString(*format, size, outConv, outSize); break; case wxT('C'): case wxT('c'): HandleChar(*format, size, outConv, outSize); break; default: // nothing special to do break; } if ( outConv == *format && outSize == size ) // no change { if ( size != Size_Default ) CopyFmtChar(*(format - 1)); CopyFmtChar(*format); } else // something changed { switch ( outSize ) { case Size_Long: InsertFmtChar(wxT('l')); break; case Size_Short: InsertFmtChar(wxT('h')); break; case Size_Default: // nothing to do break; } InsertFmtChar(outConv); } format++; } } // notice that we only translated the string if m_fmtOrig == NULL (as // set by CopyAllBefore()), otherwise we should simply use the original // format if ( m_fmtOrig ) { return wxScopedCharTypeBuffer<CharType>::CreateNonOwned(m_fmtOrig); } else { // shrink converted format string to actual size (instead of // over-sized allocation from CopyAllBefore()) and NUL-terminate // it: m_fmt.shrink(m_fmtLast - m_fmt.data()); return m_fmt; } }
wxScopedCharTypeBuffer<CharType> Convert(const CharType *format) { // this is reset to NULL if we modify the format string m_fmtOrig = format; #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ while ( *format ) { if ( CopyFmtChar(*format++) == wxT('%') ) { #if wxUSE_PRINTF_POS_PARAMS if ( *format >= '0' && *format <= '9' ) { SkipDigits(&format); if ( *format == '$' ) { // It was a positional argument specification. CopyFmtChar(*format++); } //else: it was a width specification, nothing else to do. } #endif // wxUSE_PRINTF_POS_PARAMS // skip any flags #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ while ( IsFlagChar(*format) ) CopyFmtChar(*format++); // and possible width if ( *format == wxT('*') ) CopyFmtChar(*format++); else SkipDigits(&format); // precision? if ( *format == wxT('.') ) { CopyFmtChar(*format++); if ( *format == wxT('*') ) CopyFmtChar(*format++); else SkipDigits(&format); } // next we can have a size modifier SizeModifier size; switch ( *format ) { #ifdef __VISUALC__ case 'z': // Used for size_t printing (e.g. %zu) and is in C99, // but is not portable, MSVC uses 'I' with the same // meaning. ChangeFmtChar('I'); format++; size = Size_Default; break; #endif // __VISUALC__ case 'h': size = Size_Short; format++; break; case 'l': // "ll" has a different meaning! if ( format[1] != 'l' ) { size = Size_Long; format++; break; } wxFALLTHROUGH; default: size = Size_Default; } CharType outConv = *format; SizeModifier outSize = size; // and finally we should have the type switch ( *format ) { case wxT('S'): case wxT('s'): // all strings were converted into the same form by // wxArgNormalizer<T>, this form depends on the context // in which the value is used (scanf/printf/wprintf): HandleString(*format, size, outConv, outSize); break; case wxT('C'): case wxT('c'): HandleChar(*format, size, outConv, outSize); break; default: // nothing special to do break; } if ( outConv == *format && outSize == size ) // no change { if ( size != Size_Default ) CopyFmtChar(*(format - 1)); CopyFmtChar(*format); } else // something changed { switch ( outSize ) { case Size_Long: InsertFmtChar(wxT('l')); break; case Size_Short: InsertFmtChar(wxT('h')); break; case Size_Default: // nothing to do break; } InsertFmtChar(outConv); } format++; } } // notice that we only translated the string if m_fmtOrig == NULL (as // set by CopyAllBefore()), otherwise we should simply use the original // format if ( m_fmtOrig ) { return wxScopedCharTypeBuffer<CharType>::CreateNonOwned(m_fmtOrig); } else { // shrink converted format string to actual size (instead of // over-sized allocation from CopyAllBefore()) and NUL-terminate // it: m_fmt.shrink(m_fmtLast - m_fmt.data()); return m_fmt; } }
boolean FieldStringEditor::keystroke(const Event& e) { char c; return e.mapkey(&c, 1) != 0 && HandleChar(c) && c == '\t'; }
LRESULT CALLBACK CompStrWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HIMC hIMC = NULL; HIMC hOldIMC = NULL; switch (message) { case WM_CREATE: hIMC = ImmCreateContext(); hOldIMC = ImmAssociateContext(hWnd,hIMC); SetWindowLongPtr(hWnd, 0, (LONG_PTR)hOldIMC); fdwProperty = ImmGetProperty(GetKeyboardLayout(0), IGP_PROPERTY); break; case WM_CHAR: HandleChar(hWnd,wParam,lParam); break; case WM_LBUTTONUP: /* fall-through */ case WM_RBUTTONUP: if (hIMC = ImmGetContext(hWnd)) { HMENU hMenu = NULL; InitMenuItemIDTable(); hMenu = CreateImeMenu(hWnd, hIMC, NULL,(message == WM_RBUTTONUP)); if (hMenu) { DWORD dwItemData; DWORD dwPos = (DWORD)GetMessagePos(); int nCmd; nCmd = TrackPopupMenuEx(hMenu, TPM_RETURNCMD | TPM_NONOTIFY | TPM_LEFTBUTTON | TPM_LEFTALIGN | TPM_TOPALIGN, LOWORD(dwPos), HIWORD(dwPos), hWnd, NULL); if (nCmd) { nCmd -= IDM_STARTIMEMENU; dwItemData = FindItemData(nCmd); ImmNotifyIME(hIMC, NI_IMEMENUSELECTED, nCmd, dwItemData); } } EndMenuItemIDTable(); DestroyMenu(hMenu); } break; case WM_IME_SETCONTEXT: if (fShowCand) { lParam &= ~ISC_SHOWUICANDIDATEWINDOW; } if (fdwProperty & IME_PROP_SPECIAL_UI) { // EMPTY } else if (fdwProperty & IME_PROP_AT_CARET) { lParam &= ~ISC_SHOWUICOMPOSITIONWINDOW; } else { // EMPTY } return (DefWindowProc(hWnd, message, wParam, lParam)); case WM_IME_STARTCOMPOSITION: // Normally, we should not call into HandleStartComposition // for IME_PROP_SPECIAL_UI and not IME_PROP_AT_CARET IMEs // we should pass this message to DefWindowProc directly for // this kind of IMEs HandleStartComposition(hWnd,wParam,lParam); // pass this message to DefWindowProc for IME_PROP_SPECIAL_UI // and not IME_PROP_AT_CARET IMEs if (fdwProperty & IME_PROP_SPECIAL_UI) { return (DefWindowProc(hWnd, message, wParam, lParam)); } else if (fdwProperty & IME_PROP_AT_CARET) { // EMPTY } else { return (DefWindowProc(hWnd, message, wParam, lParam)); } break; case WM_IME_ENDCOMPOSITION: // Normally, we should not call into HandleEndComposition // for IME_PROP_SPECIAL_UI and not IME_PROP_AT_CARET IMEs // we should pass this message to DefWindowProc directly for // this kind of IMEs HandleEndComposition(hWnd,wParam,lParam); // pass this message to DefWindowProc for IME_PROP_SPECIAL_UI // and not IME_PROP_AT_CARET IMEs if (fdwProperty & IME_PROP_SPECIAL_UI) { return (DefWindowProc(hWnd, message, wParam, lParam)); } else if (fdwProperty & IME_PROP_AT_CARET) { // EMPTY } else { return (DefWindowProc(hWnd, message, wParam, lParam)); } break; case WM_IME_COMPOSITION: // Normally, we should not call into HandleComposition // for IME_PROP_SPECIAL_UI and not IME_PROP_AT_CARET IMEs // we should pass this message to DefWindowProc directly for // this kind of IMEs HandleComposition(hWnd,wParam,lParam); // pass this message to DefWindowProc for IME_PROP_SPECIAL_UI // and not IME_PROP_AT_CARET IMEs if (fdwProperty & IME_PROP_SPECIAL_UI) { return (DefWindowProc(hWnd, message, wParam, lParam)); } else if (fdwProperty & IME_PROP_AT_CARET) { // EMPTY } else { return (DefWindowProc(hWnd, message, wParam, lParam)); } break; case WM_PAINT: HandlePaint(hWnd,wParam,lParam); break; case WM_IME_NOTIFY: { LRESULT lRet; // Normally, we should not call into HandleNotify // for IME_PROP_SPECIAL_UI and not IME_PROP_AT_CARET IMEs // we should pass this message to DefWindowProc directly for // this kind of IMEs lRet = HandleNotify(hWnd, message, wParam, lParam); // pass this message to DefWindowProc for IME_PROP_SPECIAL_UI // and not IME_PROP_AT_CARET IMEs if (fdwProperty & IME_PROP_SPECIAL_UI) { return (DefWindowProc(hWnd, message, wParam, lParam)); } else if (fdwProperty & IME_PROP_AT_CARET) { // EMPTY } else { return (DefWindowProc(hWnd, message, wParam, lParam)); } return lRet; } case WM_DESTROY: hOldIMC = (HIMC)GetWindowLongPtr(hWnd, 0); hIMC = ImmAssociateContext(hWnd, hOldIMC); ImmDestroyContext(hIMC); break; case WM_INPUTLANGCHANGE: fdwProperty = ImmGetProperty(GetKeyboardLayout(0), IGP_PROPERTY); if (hIMC = ImmGetContext(hWnd)) { CANDIDATEFORM cdf = {0}; if (fdwProperty & IME_PROP_AT_CARET) { cdf.dwIndex = 0; cdf.dwStyle = CFS_CANDIDATEPOS; cdf.ptCurrentPos.x = ptImeUIPos.x; cdf.ptCurrentPos.y = ptImeUIPos.y; ImmSetCandidateWindow(hIMC, &cdf); } else { UINT i; // The candidate position should be decided by a near caret // IME. There are 4 candidate form in the input context for (i = 0; i < 4; i++) { if (!ImmGetCandidateWindow(hIMC, i, &cdf)) { continue; } if (cdf.dwStyle == CFS_DEFAULT) { continue; } cdf.dwStyle = CFS_DEFAULT; ImmSetCandidateWindow(hIMC, &cdf); } } ImmReleaseContext(hWnd, hIMC); } return (DefWindowProc(hWnd, message, wParam, lParam)); default: return (DefWindowProc(hWnd, message, wParam, lParam)); } return 0L; }