Я предпочитаю скрывать панель задач, но все равно хочу показывать часы все время. Я делаю маленькие часы (80x41px), лежащие в правом нижнем углу экрана. Я делаю это Topmost [править: с таймером]:
SetWindowPos(hwnd, HWND_TOPMOST, r.right - width, r.bottom - height, 0, 0, SWP_NOSIZE);
// r is my window's rect
Когда я нажимаю на панель задач, мои часы все еще на вершине. Но когда я играю в какую-то полноэкранную игру, это скрывает мои часы. Может быть, они используют специальный метод.
Мой вопрос: есть ли способ показать мое окно поверх каждого самого верхнего окна, даже активного самого верхнего окна? Мне не нужно, чтобы мое приложение получало ввод с клавиатуры или мыши, просто лежал, чтобы показать время.
Я знаю, что мой вопрос довольно специфичен, поскольку я пишу эти часы для себя. Я искал в Google, но не нашел ни одной веб-страницы, которая могла бы решить эту проблему (этот вопрос спросите то же самое, но он хочет получить событие мыши, а ответ — нет, но я надеюсь, что окно, которое не требует ввода, может быть в особом случае).
Любая помощь будет оценена!
редактировать
Incase невозможно, как насчет нарисовать прямоугольник в верхней части экрана? Поскольку мне не нужно получать информацию, возможно, это решение для замены. Это возможно?
Это не очень элегантно, но я решил это раньше, постоянно устанавливая окно в HWND_TOPMOST
на секундный таймер.
Это внутри собственного процесса?
Как правило, процесс может ожидать установки окна переднего плана, только если этот процесс уже является процессом переднего плана. (Microsoft документирует ограничения в записи MSDN SetForegroundWindow ().)