вопрос по MFC

t332

как для немодального диалога (кажется так он называется: модальный - тот,
который "делается" функцией DoModal в некоторый момент поставить на него
постоянный фокус, как у модального?
т.е. сделать так, чтобы я не мог переключаться между другими диалогами
своего приложения пока не нажму, например, кнопку apply?

kokoc88

Самый простой способ решить твою проблему - закрыть диалог и вызвать его снова. Сменить модальность динамически нельзя. Если только уж совсем извратиться...

maggi14

Можно сделать модальность своими руками: по событию отдачи фокуса возвращать его на себя. А при желании снимать такой режим - окно снова станет немодальным.

kokoc88

Это не спасёт тебя от посылки сообщений нажатия кнопки на другом диалоге.

t332

у меня была такая мысль, но подумал, может есть "нормальный" способ.
ладно, если нет, тогда тема закрыта.
спасибо всем!

freezer

ГЫ:
Remarks
If an application is displaying a caret, the caret should be destroyed at this point.
While processing this message, do not make any function calls that display or activate a window. This causes the thread to yield control and can cause the application to stop responding to messages. For more information, see Message Deadlocks.

maggi14

Понятно. Не знал.

rosali


в некоторый момент поставить на него
постоянный фокус, как у модального?

А в чем проблема? просто, не возвращай управления, а поставь message loop с фильтром на hwnd этого диалога. Я на MFC никогда не писал, только на чистом WIN API, но вроде можно это и на MFC сделать?.. А нельзя, тогда так и пиши на WIN API


for(;;)
{
::GetMessage(...);
::DispatchMessage(...);
...
if(...)
break;
}

t332

ненавижу MFC, видимо, в будущем перепишу под WIN API, просто надо быстро
написать прогу, которая будет хоть как-то работать
проблему решил так:
EnableWindow(false) - для остальных окон ...

kokoc88

Ага, перепиши. Потом будешь ненавидеть WINAPI. Спрашивается, зачем делать то, что уже сделано...
Оставить комментарий
Имя или ник:
Комментарий: