Может кто-нибудь сможет объяснить следующий момент:
Консольное приложение, но часть сообщений выводится MessageBox-ом, которому
в качестве owner-а передается хэндл консоли, найденный как описано
здесь.
Проблема в том, что при первом с момента запуска показе MessageBox-а, фокус перескакивает
на другое окно (бывшее активным до нашего консольного), потом возвращается на консоль, но окно MessageBox-а, не становится Foreground-окном. При последующих вызовах все нормально..
Может сталкивались?
Здравствуйте, IDr, Вы писали:
IDr>Может кто-нибудь сможет объяснить следующий момент:
IDr>Консольное приложение, но часть сообщений выводится MessageBox-ом, которому
IDr>в качестве owner-а передается хэндл консоли, найденный как описано здесь.
IDr>Проблема в том, что при первом с момента запуска показе MessageBox-а, фокус перескакивает
IDr>на другое окно (бывшее активным до нашего консольного), потом возвращается на консоль, но окно MessageBox-а, не становится Foreground-окном. При последующих вызовах все нормально..
IDr>Может сталкивались?
...
hwndFound=FindWindow(NULL, pszNewWindowTitle);
...
MessageBox(hwndFound, "Hello", "Test", 0x40);
...
Может так?
Здравствуйте, Аноним, Вы писали:
А>Может так?
Видимо вы меня не так поняли

Описываю подробнее: создаем в MSVC консольное приложение, в единственный
cpp-файл проекта вставляем без изменений функцию GetConsoleHwnd из вышеприведенной
KB-статьи, в функции main пишем что нить типа:
int _tmain(int argc, _TCHAR* argv[])
{
char c;
while (true)
{
cin >> c;
if (c=='q') break;
else MessageBox(GetConsoleHwnd(),"Try","Test",MB_OK);
}
return 0;
}
Собираем приложение, сворачиваем все окна, запускаем его (не под отладчиком) и,
например, Far.
Переключаемся мышой на Far (чтобы предыдущим активным стал Far, система хранит (или вычисляет)
список-последовательность активных окон, по которым потом можно ходить по Alt-Esc), потом обратно и
жмем какую-нибудь кнопку — на долю секунды активным станет Far, потом опять консоль и
MessageBox появится "на фоне"
Здравствуйте, Аноним, Вы писали:
[Skip]
А>Собираем приложение, сворачиваем все окна, запускаем его (не под отладчиком) и,
А>например, Far.
А>Переключаемся мышой на Far (чтобы предыдущим активным стал Far, система хранит (или вычисляет)
А>список-последовательность активных окон, по которым потом можно ходить по Alt-Esc), потом обратно и
А>жмем какую-нибудь кнопку — на долю секунды активным станет Far, потом опять консоль и
А>MessageBox появится "на фоне"
Все работает как часы, Far не моргает. Что у вас за косяки понять не могу. Что значит MessageBox "на фоне"?