Диалоги "Всегда впереди"

Есть ли способ создать немодальное диалоговое окно в С++ MFC, которое всегда остается поверх других окон приложения? Я думаю, что это похоже на диалог "Найти" в Visual Studio 2005 - где он находится сверху, но вы все равно можете редактировать основной текст.

(Если это имеет значение, это не MDI, это диалоговое приложение)

Ответ 1

От Nish:

Включение диалога вверх

Разве вы не видели программы, которые вариант "всегда оставаться на вершине"? Что ж невероятное, что вы можете сделайте свой диалог на вершине с помощью одна строка кода. Просто следующая строка в вашем классе диалога Функция OnInitDialog().

SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

В основном то, что мы делаем, это использовать функция SetWindowPos для изменения Z-порядок нашего диалогового окна. Мы заставьте наш диалог оставаться на вершине всех другие окна, переместив их на верх Z-порядка. Теперь, даже когда вы активировать другое окно, наше окно останется на вершине. Но я бы посоветовал вам чтобы вы точно знали, что вы делают, когда вы это делаете, для этого могут раздражать людей, если они не могут получить ваше окно с дороги, когда они хочу сделать это.

Как вы упомянули в комментариях, приведенная выше строка делает окно сидеть поверх каждого приложения. Вам нужно будет сделать

SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

Чтобы сделать окно сидеть поверх всего вашего приложения.

-Adam