2015-01-21 2 views
0

У меня есть набор немодальных диалоговых окон, но я не могу на всю жизнь меня нажимать на один из них, чтобы он появился на переднем плане. Он получает фокус, но диалоговые окна навсегда остаются в том порядке, на котором они были созданы. Последний созданный всегда находится на переднем плане, скрывая (или частично скрывая) другие.Win32 Как привести немодальное диалоговое окно к началу

Я попытался:

  • SetActiveWindow (hDlg);
  • SetForegroundWindow (hDlg);
  • SwitchToThisWindow (hDlg, FALSE);

в ответ на сообщение WM_LBUTTONUP, но хотя они вызываются, они ничего не делают. Я пробовал разные конфигурации в свойствах диалогового окна, например, играя с параметрами «SetForground» или «Topmost», и они ничего не делают.

Я пытаюсь сделать невозможную задачу?

ответ

1

Что вызывает это право собственности на окна. Собственное окно всегда отображается над его владельцем. Это описано в documentation.

Очевидно, что у вас есть отношения собственности между вашими диалогами модели. Вы можете решить эту проблему, сделав каждый из немодальных диалогов одним и тем же окном.

Как именно вы управляете владением собственностью, зависит от того, как вы создаете эти диалоги. Если вы используете CreateDialog, то третий параметр используется для указания владельца диалогового окна.

+0

Благослови вас! Я весь день тянул волосы, чтобы попытаться это решить. Установите этот родительский параметр в NULL, и он сделает это; exe является родителем. Наверное, я знал это когда-то, потому что работала огромная программа Win32, которую я написал 9 лет назад. 9 лет, и один помнит НЕКОТОРЫЕ вещи ... но не все. –

+0

У вас есть главное окно? Обычно вы ожидаете, что будете владельцем ваших немодальных диалогов. –

+0

На самом деле я этого не делаю. Мое главное окно - это немощный диалог –