WinAPI Создание другого окна после уничтожения предыдущего
Я знаю, как создавать дочерние окна. Но что, если я хочу создать одно окно (например, для настройки параметров), а после его уничтожения - второе (на основе движка HGE). Если бы я мог разорвать цикл сообщений с помощью WM_DESTROY, я мог бы создать второе окно после этого цикла сообщений. Но, как я знаю, GetMessage возвращает 0 только в сообщении WM_QUIT, и я не могу отправить это сообщение, потому что это означает: "Закрыть приложение", а не "Закрыть окно". Итак, мой вопрос: как я могу разорвать цикл сообщений, когда первое окно получает WM_DESTROY? Это действительно возможно?
2 ответа
Это действительно очень просто, и вы не должны пытаться вырваться из цикла сообщений.
- Когда вы обрабатываете сообщение WM_CLOSE для первого окна, вызывайте CreateWindow и т. Д., Чтобы создать и показать второе окно.
- Когда вы обрабатываете сообщение WM_DESTROY для второго окна, вызывайте PostQuitMessage, чтобы завершить работу.
Просто используйте PostMessage.
#define WM_USER_CREATE_NEW_CHILD WM_USER + 1
void OnDestroy() // on destroy first child
{
PostMessage( parentWindow, WM_USER_CREATE_NEW_CHILD, 0, 0 );