Аппликуха работает на полном экране.
SetForegroundWindow( m_hWnd );
const BOOL res = ::SHFullScreen( m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON );
CRect windowRect = CRect
(
CPoint( 0, 0 ),
CPoint( GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ) )
);
MoveWindow( windowRect, TRUE );
При срабатывании напр. напоминания из календаря, выскакивает окно с текстом напоминания и кнопками "закрыть","отложить". Как можно это подавить, что бы они оставались под моей аппликухой?
Здравствуйте, uOlegator, Вы писали:
O>См. функцию SetWindowPos. Ее можно использовать, например, так
O>SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
Еще может понадобится обрабатывать WM_ACTIVATE и при деактивации окна — сохранять фокус и запускать таймер, по которому восстанавливать окно (Activate) и ставить фокус. (таймер желателен, проверено на практике, иначе не работают некоторые функции ОС... правда проверялось в .NET приложении, но это суть не меняет)
Здравствуйте, mihasic, Вы писали:
O>>См. функцию SetWindowPos. Ее можно использовать, например, так O>>SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE); M>Еще может понадобится обрабатывать WM_ACTIVATE и при деактивации окна — сохранять фокус и запускать таймер, по которому восстанавливать окно (Activate) и ставить фокус. (таймер желателен, проверено на практике, иначе не работают некоторые функции ОС... правда проверялось в .NET приложении, но это суть не меняет)
Смысл в том, что из главного окна открывается еще одно, на полный экран и по нажатию кнопки, окно сворачивается:
Пока я сделал так:
Но сейчас работает таким образом: после срабатывания напомниналки, получаю WA_INACTIVE, при выполнении SetWindowPos или SetFocus(), получаю сразу WA_ACTIVE
И окно оказывается сверху. При надатии на окно пером получаю почему-то WA_INACTIVE и все начинается сначала, окно выскакивает наверх.
Получается, что при нажатии на экран, несмотря на то, что я делал SetFocus, в фокусе все равно остается окно с напоминалкой?
Пожалуйста, объясните для чего нужно таймер, какие функции не работают?
Re[4]: Как подавить уход окна с переднего плана?
От:
Аноним
Дата:
17.05.07 09:11
Оценка:
mihasic использовал таймер потому что ему так подсказали
(В том решении таймер был нужен из-за того, что активация происходила в .NETовском обработчике OnGotFocus; поскольку это теме не относится, объянять почему было так сделано тут не буду)
Здравствуйте, RealPalmman, Вы писали:
RP>При срабатывании напр. напоминания из календаря, выскакивает окно с текстом напоминания и кнопками "закрыть","отложить". Как можно это подавить, что бы они оставались под моей аппликухой?
А лепо ли подавлять? А если это не календарь, а входящий звонок или сигнал о полной разрядке батареи?
Или ты умеешь делать это избирательно?
Здравствуйте, Кодт, Вы писали: RP>>При срабатывании напр. напоминания из календаря, выскакивает окно с текстом напоминания и кнопками "закрыть","отложить". Как можно это подавить, что бы они оставались под моей аппликухой? К>А лепо ли подавлять? А если это не календарь, а входящий звонок или сигнал о полной разрядке батареи? К>Или ты умеешь делать это избирательно?
Софтина нужна для того, что бы исключить случайные нажатия на кнопки и экран, когда КПК лежит в кармане. Подавление можно положить под чекбокс в настройках.
Контроль за разрядом аккума можно оверрайдить. А звонки, думаю, что тоже можно оверрайдить, Тут надо MSDN читать
Здравствуйте, RealPalmman, Вы писали:
RP>Софтина нужна для того, что бы исключить случайные нажатия на кнопки и экран, когда КПК лежит в кармане. Подавление можно положить под чекбокс в настройках. RP>Контроль за разрядом аккума можно оверрайдить. А звонки, думаю, что тоже можно оверрайдить, Тут надо MSDN читать
А, дело полезное. Хотя на многих девайсах для этого есть просто кнопка выключения (на mitac mio a700/701 — нет)