Возникла следующая проблема: по закрытию окна, которое было создано glutCreateWindow завершается вся программа, т. е. код после glutMainLoop() никогда не выполняется. В приведённом мною примере это строчка printf("Printf!!!");.
Подскажите пожалуйтса какой-нибудь способ получить управление после того, как пользователь закрыл окно.
Заранее благодарен.
Здравствуйте, c-smile, Вы писали:
CS>Наверное glutMainLoop(); исполняет exit(0); или типа того. CS>Есть же исходники оного? Смотри там.
Есть:
if ( msg.message == WM_QUIT ) {
exit( 0 );
}
но мою проблему это не решает.
Мне собственно говоря надо, чтобы по нажатию на крестик вызывался только glutHideWindow, чтобы потом можно было вызвать glutShowWindow(из-вне). Подскажите как это сделать, плиз.
Проблема в том, что есть dll-ка, которая отображает 3D через glut, а загружает её java-машина и по нажатию на крестик в окне, созданном glut'ом убивается java-машина . Грузить её в отдельном потоке не помогает, т.к. exit(0) завершает процесс.
Здравствуйте, <Аноним>, Вы писали:
А>Наверное это потому, что если был вызван exit то в консоль ты уже ничего не можешь вывести?
Не, это потому что exit(0) происходит в другом модуле (glut32.dll), и до тех функций что зарегистрированы в главной программе дело просто не доходит (atexit использует heap, а она будет разной для разных модулей)
А при нормальных условиях вполне таки можно в консоль писать после exit
Здравствуйте, sergey__l, Вы писали:
__>Здравствуйте, demi, Вы писали:
__>Не работает(по закрытию крестиком в консоль ничего не попадает). __>Может я что-то не так делаю?
ЭЭЭх ну сделай тогда чудовищную весчЪ Найди окно FindWindow() по тексту в заголовке, на и замени WNDPROC на свою такого содержания:
LRESULT CALLBACK GLUT_Hack(HWND hwnd, UINT msg, LPARAM lp, WPARAM wp)
{
if (msg == WM_CLOSE)
{
printf("Ha ha glut! Ja kruche!\n");
//free mem and etc
}
//Send it to glut...return GLUT_MsgProc(hwnd, msg, lp, wp);
}
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Здравствуйте, demi, Вы писали:
D>ЭЭЭх ну сделай тогда чудовищную весчЪ Найди окно FindWindow() по тексту в заголовке, на и замени WNDPROC на свою
Спасибо за ответ!
Я почти так и сделал(повесил hook на поток и обработал WM_QUIT), но мне этот способ не очень нравится завязкой на Win API. Glut ведь был сделан типа для переносимости и всё такое, а приходится использовать вещи, зависимые от ОС