本文整理汇总了C++中wxKeyEvent::HasModifiers方法的典型用法代码示例。如果您正苦于以下问题:C++ wxKeyEvent::HasModifiers方法的具体用法?C++ wxKeyEvent::HasModifiers怎么用?C++ wxKeyEvent::HasModifiers使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxKeyEvent
的用法示例。
在下文中一共展示了wxKeyEvent::HasModifiers方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnKeyUp
void wxWindow::OnKeyUp(wxKeyEvent& event)
{
int key = event.GetKeyCode();
if ( !event.HasModifiers() && (key == WXK_ALT || key == WXK_F10) )
{
// only process Alt release specially if there were no other key
// presses since Alt had been pressed and if both events happened in
// the same window
if ( ms_winLastAltPress == this )
{
wxMenuBar *menubar = GetParentFrameMenuBar();
if ( menubar && this != menubar )
{
menubar->SelectMenu(0);
}
}
}
else
{
event.Skip();
}
// in any case reset it
ms_winLastAltPress = NULL;
}
示例2: OnKeyDown
void wxListCtrlEx::OnKeyDown(wxKeyEvent& event)
{
if (!m_prefixSearch_enabled)
{
event.Skip();
return;
}
int code = event.GetKeyCode();
if (code == WXK_LEFT ||
code == WXK_RIGHT ||
code == WXK_UP ||
code == WXK_DOWN ||
code == WXK_HOME ||
code == WXK_END)
{
ResetSearchPrefix();
}
#if defined(__WXMSW__) && wxUSE_UNICODE
wxChar key = MapVirtualKey(event.GetUnicodeKey(), 2);
if (key < 32)
{
event.Skip();
return;
}
else if (key == 32 || event.HasModifiers())
{
event.Skip();
return;
}
HandlePrefixSearch(key);
return;
#else
if (code > 32 && code < 300 && !event.HasModifiers())
{
#if wxUSE_UNICODE
int unicodeKey = event.GetUnicodeKey();
if (unicodeKey)
code = unicodeKey;
#endif
HandlePrefixSearch(code);
}
else
event.Skip();
#endif //defined(__WXMSW__) && wxUSE_UNICODE
}
示例3: OnKeyPressed
void CamuleDlg::OnKeyPressed(wxKeyEvent& event)
{
if (event.GetKeyCode() == WXK_F1) {
// Ctrl/Alt/Shift must not be pressed, to avoid
// conflicts with other (global) shortcuts.
if (!event.HasModifiers() && !event.ShiftDown()) {
LaunchUrl(wxT("http://wiki.amule.org"));
return;
}
}
event.Skip();
}
示例4: OnEditKey
void wxTimeSpinCtrl::OnEditKey(wxKeyEvent &ev)
{
if (!ev.HasModifiers())
{
switch(ev.GetKeyCode())
{
case WXK_LEFT:
{
if (!ev.ShiftDown())
{
int tp = GetTimePart() + 1;
if (tp < 3 || (hasDay && tp == 3))
{
Highlight(tp);
return;
}
}
break;
}
case WXK_RIGHT:
{
if (!ev.ShiftDown())
{
int tp = GetTimePart() - 1;
if (tp >= 0)
{
Highlight(tp);
return;
}
}
break;
}
case WXK_UP:
DoSpin(1);
return;
break;
case WXK_DOWN:
DoSpin(-1);
return;
break;
default:
break;
}
}
ev.Skip();
}
示例5: onFormChar
void LoginForm::onFormChar(wxKeyEvent& event)
{
if (event.m_keyCode == WXK_TAB)
{
processTab(!event.ShiftDown(), event.GetId());
}
else
{
int32 keyCode = event.GetKeyCode();
if (!event.HasModifiers() && ((keyCode >= '0' && keyCode <= '9') || (keyCode >= 'a' && keyCode <= 'z') || (keyCode >= 'A' && keyCode <= 'Z' )))
{
m_tbUsername->SetFocus();
m_tbUsername->SetValue((char)keyCode);
m_tbUsername->SetInsertionPointEnd();
}
}
}
示例6: OnChar
void wxWindow::OnChar(wxKeyEvent& event)
{
if ( event.AltDown() && !event.ControlDown() )
{
int key = event.GetKeyCode();
wxMenuBar *menubar = GetParentFrameMenuBar();
if ( menubar )
{
int item = menubar->FindNextItemForAccel(-1, key);
if ( item != -1 )
{
menubar->PopupMenu((size_t)item);
// skip "event.Skip()" below
return;
}
}
}
// if Return was pressed, see if there's a default button to activate
if ( !event.HasModifiers() && event.GetKeyCode() == WXK_RETURN )
{
wxTopLevelWindow *
tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
if ( tlw )
{
wxButton *btn = wxDynamicCast(tlw->GetDefaultItem(), wxButton);
if ( btn )
{
wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED, btn->GetId());
evt.SetEventObject(btn);
btn->Command(evt);
return;
}
}
}
event.Skip();
}
示例7: OnChar
void ctlTree::OnChar(wxKeyEvent &event)
{
int keyCode = event.GetKeyCode();
if ( !event.HasModifiers() &&
((keyCode >= '0' && keyCode <= '9') ||
(keyCode >= 'a' && keyCode <= 'z') ||
(keyCode >= 'A' && keyCode <= 'Z')))
{
wxTreeItemId currItem = GetSelection();
if (!currItem.IsOk())
return;
wxTreeItemId matchItem = FindItem(currItem, m_findPrefix + (wxChar)keyCode);
if ( matchItem.IsOk() )
{
EnsureVisible(matchItem);
SelectItem(matchItem);
m_findPrefix += (wxChar)keyCode;
// also start the timer to reset the current prefix if the user
// doesn't press any more alnum keys soon -- we wouldn't want
// to use this prefix for a new item search
if ( !m_findTimer )
{
m_findTimer = new ctlTreeFindTimer(this);
}
m_findTimer->Start(ctlTreeFindTimer::CTLTREE_DELAY, wxTIMER_ONE_SHOT);
return;
}
}
else
{
event.Skip(true);
}
}
示例8: OnKeyDownEvent
void HotkeyCtrl::OnKeyDownEvent(wxKeyEvent& e)
{
e.StopPropagation();
int code = e.GetKeyCode();
if (code == WXK_WINDOWS_LEFT || code == WXK_WINDOWS_RIGHT)
{
WinDown = true;
return;
}
if (code == WXK_NONE || code == WXK_SHIFT || code == WXK_ALT || code == WXK_CONTROL)
return;
if (code == WXK_DELETE)
{
this->Clear();
return;
}
wxString key;
if (code > 32 && code < 127)
key.Append(e.GetUnicodeKey());
else
key = g_keys.GetKeyString(code);
if (key.empty())
return;
if (e.HasModifiers())
{
int Modifers = e.GetModifiers();
if (Modifers & wxMOD_ALT)
key.insert(0,"Alt+");
if (Modifers & wxMOD_CONTROL)
key.insert(0,"Ctrl+");
if (Modifers & wxMOD_SHIFT)
key.insert(0,"Shift+");
}
if (WinDown)
key.insert(0,"Win+");
this->SetValue(key);
}
示例9: OnKeyChar
void StyledTextBox::OnKeyChar(wxKeyEvent& keyEvent) {
// Process visible character input
if (!keyEvent.HasModifiers()) {
int keycode = keyEvent.GetRawKeyCode();
if (keycode < 255 && isprint(keycode)) {
if (HasSelectedText()) {
RemoveSelectedText();
}
char c = (wxChar)keycode;
auto text = GetStdText();
auto insertPosition = begin(text) + GetCursorPosition();
text.insert(insertPosition, c);
SetText(text);
SetCursorPosition(GetCursorPosition() + 1);
}
}
}
示例10: OnChar
void CLocalListView::OnChar(wxKeyEvent& event)
{
int code = event.GetKeyCode();
if (code == WXK_DELETE)
{
if (GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED) == -1)
{
wxBell();
return;
}
wxCommandEvent tmp;
OnMenuDelete(tmp);
}
else if (code == WXK_F2)
{
wxCommandEvent tmp;
OnMenuRename(tmp);
}
else if (code == WXK_BACK)
{
if (!m_hasParent)
{
wxBell();
return;
}
wxString error;
if (!m_pState->SetLocalDir(_T(".."), &error))
{
if (error != _T(""))
wxMessageBox(error, _("Failed to change directory"), wxICON_INFORMATION);
else
wxBell();
}
}
else if (code > 32 && code < 300 && !event.HasModifiers())
{
// Keyboard navigation within items
wxDateTime now = wxDateTime::UNow();
if (m_lastKeyPress.IsValid())
{
wxTimeSpan span = now - m_lastKeyPress;
if (span.GetSeconds() >= 1)
m_prefix = _T("");
}
m_lastKeyPress = now;
wxChar tmp[2];
#if wxUSE_UNICODE
tmp[0] = event.GetUnicodeKey();
#else
tmp[0] = code;
#endif
tmp[1] = 0;
wxString newPrefix = m_prefix + tmp;
bool beep = false;
int item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
if (item != -1)
{
wxString text = GetData(item)->name;
if (text.Length() >= m_prefix.Length() && !m_prefix.CmpNoCase(text.Left(m_prefix.Length())))
beep = true;
}
else if (m_prefix == _T(""))
beep = true;
int start = item;
if (start < 0)
start = 0;
int newPos = FindItemWithPrefix(newPrefix, start);
if (newPos == -1 && m_prefix == tmp && item != -1 && beep)
{
// Search the next item that starts with the same letter
newPrefix = m_prefix;
newPos = FindItemWithPrefix(newPrefix, item + 1);
}
m_prefix = newPrefix;
if (newPos == -1)
{
if (beep)
wxBell();
return;
}
item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
while (item != -1)
{
SetItemState(item, 0, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
}
SetItemState(newPos, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
EnsureVisible(newPos);
}
else
event.Skip();
}
示例11: OnKeyDown
void wxListCtrlEx::OnKeyDown(wxKeyEvent& event)
{
if (!m_prefixSearch_enabled)
{
event.Skip();
return;
}
int code = event.GetKeyCode();
if (code == WXK_LEFT ||
code == WXK_RIGHT ||
code == WXK_UP ||
code == WXK_DOWN ||
code == WXK_HOME ||
code == WXK_END)
{
ResetSearchPrefix();
event.Skip();
return;
}
if (event.AltDown() && !event.ControlDown()) // Alt but not AltGr
{
event.Skip();
return;
}
wxChar key;
switch (code)
{
case WXK_NUMPAD0:
case WXK_NUMPAD1:
case WXK_NUMPAD2:
case WXK_NUMPAD3:
case WXK_NUMPAD4:
case WXK_NUMPAD5:
case WXK_NUMPAD6:
case WXK_NUMPAD7:
case WXK_NUMPAD8:
case WXK_NUMPAD9:
key = '0' + code - WXK_NUMPAD0;
break;
case WXK_NUMPAD_ADD:
key = '+';
break;
case WXK_NUMPAD_SUBTRACT:
key = '-';
break;
case WXK_NUMPAD_MULTIPLY:
key = '*';
break;
case WXK_NUMPAD_DIVIDE:
key = '/';
break;
default:
key = 0;
break;
}
if (key)
{
if (event.GetModifiers())
{
// Numpad keys can not have modifiers
event.Skip();
}
HandlePrefixSearch(key);
return;
}
#if defined(__WXMSW__)
if (code >= 300 && code != WXK_NUMPAD_DECIMAL)
{
event.Skip();
return;
}
// Get the actual key
BYTE state[256];
if (!GetKeyboardState(state)) {
event.Skip();
return;
}
wxChar buffer[1];
int res = ToUnicode(event.GetRawKeyCode(), 0, state, buffer, 1, 0);
if (res != 1)
{
event.Skip();
return;
}
key = buffer[0];
if (key < 32)
{
event.Skip();
return;
}
if (key == 32 && event.HasModifiers())
//.........这里部分代码省略.........