Как сделать несколько окон с помощью Win32 API

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

Прямо сейчас у меня есть рабочий код, который создает и тянет многоуровневое окно, и я могу блитировать материал с помощью GDI для рисования чего-либо, что я хочу на нем, перетаскиваю его вокруг, даже делаю его прозрачным и т.д.

Но я хотел вторую прямоугольную область, к которой я могу потянуть, перетащить вокруг, и т.д. Другими словами, второе окно. Вероятно, хочу, чтобы это было дочерним окном. Вопрос, как я делаю его?

Кроме того, если кто-либо знает какие-либо хорошие ресурсы (онлайн предпочтительно) как статьи или учебные руководства для управления окнами в Windows API, совместно используйте.

10
задан Steven Lu 22 May 2010 в 01:46
поделиться

3 ответа

Вы можете нажимать CreateWindow () более одного раза, если хотите. Цикл сообщений в вашем WinMain будет передавать события всем окнам, которые создает WinMain. Вы даже можете создать два перекрывающихся окна и установить родительское окно второго окна как дескриптор первого, если хотите.

8
ответ дан 3 December 2019 в 16:29
поделиться

Вы можете создать столько окон, сколько хотите, используя CreateWindow / CreateWindowEx, со связью между ними по вашему желанию (владелец / потомок).

Вы можете сделать окно «принадлежащим» другим с помощью:

SetWindowLongPtr(hwnd, GWLP_HWNDPARENT, (LONG_PTR) hwndParent);

Чтобы преобразовать окно в дочернее, используйте SetParent .

Обратите внимание, что вызов SetWindowLongPtr с GWLP_HWNDPARENT не ведет себя как SetParent (я думаю, MSDN ошибочен). GWLP_HWNDPARENT преобразует окно не в «дочернее», а в «принадлежащее».

2
ответ дан 3 December 2019 в 16:29
поделиться

Похоже, вам нужен Многодокументный интерфейс . Вот пример одного из них:

http://www.codeproject.com/KB/winsdk/Sigma.aspx

3
ответ дан 3 December 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: