| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как сделать активное дочернее окно |
| Автор: Anton Vatchenko 17.3.2006, 17:56 |
| Мне нужно, чтобы при создании дочернего окна родительское было тоже активным, и дочернее окно можно было вытащить за пределы родительского - как во многих программах, где можно иметь доступ одновременно к двум окнам, перемещать одно за пределы другого, но чтобы родительское окно было всегда под дочерними. |
| Автор: _hunter 17.3.2006, 18:32 |
| FormStyle в fsStayOnTop поставь... |
| Автор: Anton Vatchenko 17.3.2006, 18:46 |
| Я пока так и делаю, но родительское окно становится неактивным. P.S. использую WinAPI |
| Автор: Earnest 17.3.2006, 18:53 |
| Что значит "неактивно"? Не реагирует на клики или заголовок серый? И как ты открываешь дочернее окно? |
| Автор: Anton Vatchenko 17.3.2006, 20:40 |
| Earnest, заголовок серый. Создаю дочернее окно как обычное окно WS_OVERLAPPED и нигде родительское не указываю. |
| Автор: Fixin 17.3.2006, 21:25 |
| А как немодальный диалог не катит? |
| Автор: Anton Vatchenko 20.3.2006, 17:47 |
| Fixin, мне не нужен диалог. Мне нужно сгенерированное мною окно. |
| Автор: _hunter 20.3.2006, 18:15 |
| само-собой заголовок серым будет. а системе может быть только одно top-most окно. |
| Автор: Earnest 20.3.2006, 18:45 |
| 1) В качестве парента при создании дочернего окна все же надо указывать родительское. 2) Чтобы у родительского окна заголовок всегда был активен (если активно дочернее окно), это по-моему руками делать надо - отслеживать WM_NCACTIVATE. По крайней мере, так в MFC-фреймворке сделано. Т.е. если wParam=FALSE, то проверить, не активен ли наш чайлд, и если да, то вернуть 0 - типа не надо ничего делать. Как-то так. |
| Автор: Anton Vatchenko 20.3.2006, 20:19 |
| _hunter Да? А ты запусти Visual Studio и выбери свойства или исходника, или элемента диалога. Появляется окно а-ля диалог, и окно VS не серое, и свойства тоже, и управлять обеими можно. Такое есть во многих программах. Раз такое можно сделать с диалогами, то и с обычными окнами тоже. |