本文整理汇总了C++中ContainerWindow::GetFocusedWindowReference方法的典型用法代码示例。如果您正苦于以下问题:C++ ContainerWindow::GetFocusedWindowReference方法的具体用法?C++ ContainerWindow::GetFocusedWindowReference怎么用?C++ ContainerWindow::GetFocusedWindowReference使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ContainerWindow
的用法示例。
在下文中一共展示了ContainerWindow::GetFocusedWindowReference方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loop
int
WndForm::ShowModal()
{
#ifndef USE_WINUSER
ContainerWindow *root = GetRootOwner();
WindowReference old_focus_reference = root->GetFocusedWindowReference();
#else
HWND oldFocusHwnd;
#endif /* USE_WINUSER */
PeriodClock enter_clock;
if (IsEmbedded())
enter_clock.Update();
ShowOnTop();
modal_result = 0;
SingleWindow &main_window = GetMainWindow();
main_window.CancelMode();
#ifdef USE_WINUSER
oldFocusHwnd = ::GetFocus();
#endif /* USE_WINUSER */
SetDefaultFocus();
bool hastimed = false;
main_window.AddDialog(this);
#ifndef USE_GDI
main_window.Refresh();
#endif
#if defined(ANDROID) || defined(USE_POLL_EVENT) || defined(ENABLE_SDL)
EventLoop loop(*event_queue, main_window);
#else
DialogEventLoop loop(*event_queue, *this);
#endif
Event event;
while ((modal_result == 0 || force) && loop.Get(event)) {
if (!main_window.FilterEvent(event, this)) {
if (modeless && event.IsMouseDown())
break;
else
continue;
}
// hack to stop exiting immediately
if (IsEmbedded() && !hastimed &&
event.IsUserInput()) {
if (!enter_clock.Check(200))
/* ignore user input in the first 200ms */
continue;
else
hastimed = true;
}
if (event.IsKeyDown()) {
if (OnAnyKeyDown(event.GetKeyCode()))
continue;
#ifdef ENABLE_SDL
if (event.GetKeyCode() == SDLK_TAB) {
/* the Tab key moves the keyboard focus */
#if SDL_MAJOR_VERSION >= 2
const Uint8 *keystate = ::SDL_GetKeyboardState(nullptr);
event.event.key.keysym.sym =
keystate[SDL_SCANCODE_LSHIFT] || keystate[SDL_SCANCODE_RSHIFT]
? SDLK_UP : SDLK_DOWN;
#else
const Uint8 *keystate = ::SDL_GetKeyState(nullptr);
event.event.key.keysym.sym =
keystate[SDLK_LSHIFT] || keystate[SDLK_RSHIFT]
? SDLK_UP : SDLK_DOWN;
#endif
}
#endif
if (
#ifdef USE_WINUSER
IdentifyDescendant(event.msg.hwnd) &&
#endif
(event.GetKeyCode() == KEY_UP || event.GetKeyCode() == KEY_DOWN)) {
/* KEY_UP and KEY_DOWN move the focus only within the current
control group - but we want it to behave like Shift-Tab and
Tab */
if (!CheckKey(this, event)) {
/* this window doesn't handle KEY_UP/KEY_DOWN */
if (event.GetKeyCode() == KEY_DOWN)
FocusNextControl();
else
FocusPreviousControl();
continue;
}
}
#ifndef USE_WINUSER
//.........这里部分代码省略.........
示例2: loop
int
WndForm::ShowModal()
{
assert_none_locked();
#define OPENCLOSESUPPRESSTIME 500
#ifndef USE_GDI
ContainerWindow *root = get_root_owner();
WindowReference old_focus_reference = root->GetFocusedWindowReference();
#else
HWND oldFocusHwnd;
#endif /* USE_GDI */
PeriodClock enter_clock;
if (is_embedded() && !is_altair())
enter_clock.update();
show_on_top();
mModalResult = 0;
#ifdef USE_GDI
oldFocusHwnd = ::GetFocus();
if (oldFocusHwnd != NULL)
::SendMessage(oldFocusHwnd, WM_CANCELMODE, 0, 0);
#endif /* USE_GDI */
set_focus();
focus_first_control();
bool hastimed = false;
WndForm::timeAnyOpenClose.update(); // when current dlg opens or child closes
main_window.add_dialog(this);
#ifndef USE_GDI
main_window.refresh();
#endif
#ifdef ANDROID
EventLoop loop(*event_queue, main_window);
Event event;
#elif defined(ENABLE_SDL)
EventLoop loop(main_window);
SDL_Event event;
#else
DialogEventLoop loop(*this);
MSG event;
#endif
while ((mModalResult == 0 || force) && loop.get(event)) {
#if defined(ENABLE_SDL) && !defined(ANDROID)
if (event.type == SDL_QUIT) {
mModalResult = mrCancel;
continue;
}
#endif
if (!main_window.FilterEvent(event, this))
continue;
// hack to stop exiting immediately
if (is_embedded() && !is_altair() && !hastimed &&
is_user_input(event)) {
if (!enter_clock.check(200))
/* ignore user input in the first 200ms */
continue;
else
hastimed = true;
}
if (is_embedded() && is_mouse_up(event) &&
!timeAnyOpenClose.check(OPENCLOSESUPPRESSTIME))
/* prevents child click from being repeat-handled by parent if
buttons overlap */
continue;
if (mOnKeyDownNotify != NULL && is_key_down(event) &&
#ifdef USE_GDI
identify_descendant(event.hwnd) &&
#endif
!check_special_key(this, event) &&
mOnKeyDownNotify(*this, get_key_code(event)))
continue;
#if defined(ENABLE_SDL) && !defined(ANDROID)
if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_TAB) {
/* the Tab key moves the keyboard focus */
const Uint8 *keystate = ::SDL_GetKeyState(NULL);
event.key.keysym.sym = keystate[SDLK_LSHIFT] || keystate[SDLK_RSHIFT]
? SDLK_UP : SDLK_DOWN;
}
#endif
if (is_key_down(event) &&
#ifdef USE_GDI
identify_descendant(event.hwnd) &&
#endif
(get_key_code(event) == VK_UP || get_key_code(event) == VK_DOWN)) {
/* VK_UP and VK_DOWN move the focus only within the current
control group - but we want it to behave like Shift-Tab and
//.........这里部分代码省略.........
示例3: loop
int
WndForm::ShowModal()
{
AssertNoneLocked();
#define OPENCLOSESUPPRESSTIME 500
#ifndef USE_GDI
ContainerWindow *root = GetRootOwner();
WindowReference old_focus_reference = root->GetFocusedWindowReference();
#else
HWND oldFocusHwnd;
#endif /* USE_GDI */
PeriodClock enter_clock;
if (IsEmbedded() && !IsAltair())
enter_clock.Update();
ShowOnTop();
modal_result = 0;
SingleWindow &main_window = GetMainWindow();
main_window.CancelMode();
#ifdef USE_GDI
oldFocusHwnd = ::GetFocus();
#endif /* USE_GDI */
SetFocus();
if (default_focus)
default_focus->SetFocus();
else
client_area.FocusFirstControl();
bool hastimed = false;
main_window.AddDialog(this);
#ifndef USE_GDI
main_window.Refresh();
#endif
#if defined(ANDROID) || defined(USE_EGL)
EventLoop loop(*event_queue, main_window);
#elif defined(ENABLE_SDL)
EventLoop loop(main_window);
#else
DialogEventLoop loop(*this);
#endif
Event event;
while ((modal_result == 0 || force) && loop.Get(event)) {
if (!main_window.FilterEvent(event, this)) {
if (modeless && event.IsMouseDown())
break;
else
continue;
}
// hack to stop exiting immediately
if (IsEmbedded() && !IsAltair() && !hastimed &&
event.IsUserInput()) {
if (!enter_clock.Check(200))
/* ignore user input in the first 200ms */
continue;
else
hastimed = true;
}
if (event.IsKeyDown()) {
if (key_down_function &&
#ifdef USE_GDI
IdentifyDescendant(event.msg.hwnd) &&
#endif
!CheckSpecialKey(this, event) &&
key_down_function(event.GetKeyCode()))
continue;
#ifdef ENABLE_SDL
if (event.GetKeyCode() == SDLK_TAB) {
/* the Tab key moves the keyboard focus */
const Uint8 *keystate = ::SDL_GetKeyState(NULL);
event.event.key.keysym.sym =
keystate[SDLK_LSHIFT] || keystate[SDLK_RSHIFT]
? SDLK_UP : SDLK_DOWN;
}
#endif
if (
#ifdef USE_GDI
IdentifyDescendant(event.msg.hwnd) &&
#endif
(event.GetKeyCode() == KEY_UP || event.GetKeyCode() == KEY_DOWN)) {
/* KEY_UP and KEY_DOWN move the focus only within the current
control group - but we want it to behave like Shift-Tab and
Tab */
if (!CheckKey(this, event)) {
/* this window doesn't handle KEY_UP/KEY_DOWN */
if (event.GetKeyCode() == KEY_DOWN)
FocusNextControl();
//.........这里部分代码省略.........