Дочерние окна в панели задач
Как сделать, чтобы дочерние окна были видны в панели задач, как главное окно приложения?
Как сделать, чтобы дочерние окна были видны в панели задач, как главное окно приложения?
При создании окна использовать флаг WS_EX_APPWINDOW.
При создании окна использовать флаг WS_EX_APPWINDOW.
Уважаемый! Не подскажете ли каким образом сделать так, чтобы форма2 открывалась поверх основной формы, причем надо, чтобы форма открылась автоматом при создании основного окна. Каким образом указать координаты создаваемого окна, т.е. его местоположение на экране?
offtopicЯ начинающий в программировании под Windows. Около 4-х лет программировал встраиваемые системы под QNX. Там все было просто: каждое окно имело возможность установить вызов при открыти. В этом вызове прописывалось открытие нового окна. Как реализовать подобное в Windows?
Заранее благодарю за помощь.
P.S. Использую C++ Builder 6
TMyForm2 * MF2=new TMyForm2(this);
MF2->Top=xx;//выставляем отступ окна от верха экрана
MF2->Left=xx;//выставляем отступ окна от левого края экрана
далее можно выставить Width, Height, Transparency и т.д. :)))
в заключение
MF2->Show(); или MF2->ShowModal(); опять таки смотря чо конкретно надо.
Кому это форма подчиняется всегда можно поменять через пропертю Parent - подставив хендл родительского окна , если не ошибаюсь таким образом можно и в панель задач вынести формочку - если от эксплореровского окошка родить, но если и ошибаюсь то несильно - что-то подобное проделывал помойму без обращения к винапи(точно не помню):)
З.Ы. конструктор вначале - ессно по хотению опять таки, можно один раз создать и просто хайд\шоу делать, но обычно проще заново создавать и мочить потом
Нет ничего проще - в обработчике главной формы OnCreate (или OnShow смотря что конкретно надо) ставите:
TMyForm2 * MF2=new TMyForm2(this);
MF2->Top=xx;//выставляем отступ окна от верха экрана
MF2->Left=xx;//выставляем отступ окна от левого края экрана
далее можно выставить Width, Height, Transparency и т.д. :)))
в заключение
MF2->Show(); или MF2->ShowModal(); опять таки смотря чо конкретно надо.
Кому это форма подчиняется всегда можно поменять через пропертю Parent - подставив хендл родительского окна , если не ошибаюсь таким образом можно и в панель задач вынести формочку - если от эксплореровского окошка родить, но если и ошибаюсь то несильно - что-то подобное проделывал помойму без обращения к винапи(точно не помню):)
З.Ы. конструктор вначале - ессно по хотению опять таки, можно один раз создать и просто хайд\шоу делать, но обычно проще заново создавать и мочить потом
Большое спасибо за помощь, но вот меня еще интересует такой вопрос: окна открываются, но они при потере фокуса (например нажимаем любую кнопку на основном окне) пропадают, т.е. уходят на задний план. Причем при открытии этих окон с начальной формы, они изначально уходят на задний план. Этого в моем случае быть не должно. В QNX я выставлял флажок Pt_WM_STATE_IS_FRONT - окошко всегда было поверх остальных окошек. Каким образом реализуется подобное в Windows?
Заранее благодарю.
...при потере фокуса (например нажимаем любую кнопку на основном окне) пропадают...
Сам разобрался. :) Ситуация была в следующем: в билдере в свойствах основной формы (Properties) необходимо было выставить FormStyle в fsNormal. А на форме2 необходимо выставить этот флаг в значение fsStayOnTop. Все открывается как положено. И даже если я в основном окне нажимаю на кнопки, т.е. теряется фокус формы2, окно не пропадает, а остается на экране. :) Вот такое вот решение :D
У меня вот еще появился такой вопрос: в QNX я мог написать в вызове, например, от кнопки:
bool StatusOpenWindows;
...
if(!Status) return (Pt_CONTINUE);
else !Status;
...
тем самым завершалось выполнение этого вызова (на return (Pt_CONTINUE) ), причем код который лежит ниже не выполняется. Что либо подобное есть в Windows? Хочется сделать нечно вроде: нажимаем кнопку - открывается окно, при повторном нажатии на эту же кнопку закрывается окно.
Заранее благодарю!
bool StatusOpenWindows;
...
if(!Status) return (Pt_CONTINUE);
else !Status;
...
тем самым завершалось выполнение этого вызова (на return (Pt_CONTINUE) ), причем код который лежит ниже не выполняется. Что либо подобное есть в Windows? Хочется сделать нечно вроде: нажимаем кнопку - открывается окно, при повторном нажатии на эту же кнопку закрывается окно.
Заранее благодарю! [/QUOTE]
Не очень понял вопрос :) код как он приведён будет точно так же выполняться и в билдере - если нестатус то выход, если статус - то сделать его нестатусом. Я так понимаю вся соль в pt_continue - не понимаю какая именно соль :)