Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание окон с отдельными кнопками на панели задач [D7, Win95/98, NT4, Win2k, WinXP]


Михаил_ ©   (2005-12-02 09:48:00) 

Всем привет.
Вопрос такой:
как создавать окошки так, чтобы на панели задач для каждого нового окна отображалась отдельная кнопка (наподобие того, как Internet Explorer или Word создают новые окошки).
Заранее благодарен.


Михаил_   (2005-12-02 13:02:00) [1]

Точно, забыл указать override.
Все заработала, Все спасибо за советы!!!


Плохиш   (2005-12-02 12:56:00) [2]

procedure CreateParams(var Params: TCreateParams); override;


Михаил_   (2005-12-02 12:54:00) [3]

Что-то не выходит. Я делаю так:
1. в секцию privateдобавил procedure CreateParams(var Params: TCreateParams);;
2. в implementation
procedure TForm3.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with params do
ExStyle := ExStyle or WS_EX_APPWINDOW
end;

3. в модуле unit1

procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.Show;
end;

и принажатии на кнопку Button2 появляется окно, но на панели задач новой кнопки не появляется.
В чем может быть дело?


ANB   (2005-12-02 12:20:00) [4]

procedure TfmLog.CreateParams(var Params: TCreateParams);
begin
inherited;
with Params do begin
 Style := (Style or WS_POPUP) and (not WS_CHILD);
 WndParent := HWND_DESKTOP;
end;
end;

Так почему то работает.


Чапаев   (2005-12-02 11:08:00) [5]


> А нельзя ли добиться того же эффекта, используя объекты?

Ну почему сразу нельзя? ;-) Можно!

Перекрывай метод формы CreateParams. Там вызывай inherited, а потом добавляй WS_EX_APPWINDOW (кажется, так) в ExStyle (кажется, так).


Михаил_   (2005-12-02 10:40:00) [6]

Чапаев, спасибо за ответ, но если я правильно понял, то придется создавать все компоненты окна в ручную пользуясь WinAPI. А нельзя ли добиться того же эффекта, используя объекты?


Чапаев   (2005-12-02 10:07:00) [7]

RTFM GetWindowLong(), SetWindowLong(), раздел о стилях окна в справке по CreateWindowEx().


Наверх

Титульная страница Поиск, карта сайта Написать письмо