Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Какие стили должно иметь окно, для отображения его кнопки окна на   Найти похожие ветки 

 
Seldon   (2004-03-10 16:16) [0]

Какие стили должно иметь окно, для отображения его кнопки окна на таскбаре?


 
Maverick   (2004-03-10 16:23) [1]

Таскбар окна его кнопки не отобразится без стиля....
Формулируй проще....


 
Seldon   (2004-03-10 18:53) [2]

второ "окно"  лишнее.


 
DVM ©   (2004-03-10 20:54) [3]

WS_EX_APPWINDOW


 
Seldon   (2004-03-10 20:58) [4]

И всё? Другие значения не имеют?


 
DVM ©   (2004-03-10 21:08) [5]


> И всё? Другие значения не имеют?

имеют, но этого должно быть достаточно. Не должно быть WS_EX_TOOLWINDOW, подробнее на MSDN расписано в статье "The TaskBar"


 
Seldon   (2004-03-11 20:46) [6]

Извиняюсь за глупый, наверное, вопрос.
Я получил ExStyle окна, как узнать, есть ли в нём WS_EX_APPWINDOW?


 
VMcL ©   (2004-03-11 22:51) [7]

if ExStyle and WS_EX_APPWINDOW <> 0 then <есть> else <нету>


 
Seldon   (2004-03-12 21:26) [8]

Допустим делаю так:


function EnumWindowsCallback(Handle:HWnd;Param:LParam):Boolean; stdcall;
var
 ExStyle:Integer;
 
 function GetWindowTextStr(Handle:HWnd):String;
 begin
   SetLength(Result,GetWindowTextLength(Handle)+1);
   SetLength(Result,GetWindowText(Handle,@Result[1],Length(Result)));
 end;

begin
 Result:=true;
 ExStyle:=GetWindowLong(Handle,gwl_ExStyle);
 if (ExStyle and WS_EX_APPWINDOW=0)and(ExStyle and WS_EX_TOOLWINDOW=0) then
   Form1.ListBox1.Items.Add(GetWindowTextStr(Handle))
end;

begin
 {...}
 EnumWindows(@EnumWindowsCallback,0);
 {...}
end.


В ListBox"e только Punto Switcher Main Window, который как раз на таскбаре и не отображается.
Что неверно?


 
DVM ©   (2004-03-12 22:17) [9]

Вот тебе функция, возвращает true, если окно должно быть на таскбаре. Не совсем верная, но в 99,9% случаев работает как надо.

function IsAppWindow(Wnd: HWND): BOOL;
var
 Style, ExtStyle: LongInt;
 hOwner, hParent: HWND;
begin
 Result := true;
 if not IsWindow(Wnd) then
   begin
     Result := false;
     exit;
   end;
 Style := GetWindowLong(Wnd, GWL_STYLE);
 ExtStyle := GetWindowLong(Wnd , GWL_EXSTYLE);
 hOwner := GetWindow(Wnd, GW_OWNER);
 hParent := GetParent(Wnd);
 if (Style and WS_CHILD) <> 0 then result := false;
 if (Style and WS_VISIBLE) = 0 then Result := false;
 if not IsWindowVisible(Wnd) then Result := false;
 if (ExtStyle and  WS_EX_TOOLWINDOW) <> 0 then Result := false;
 if (ExtStyle and  WS_EX_MDICHILD) <> 0 then Result := false;

 if (hOwner <> 0) and ((ExtStyle and WS_EX_APPWINDOW) = 0) then result := false;
 if (hOwner <> 0) and Result then Result := not IsAppWindow(hOwner);

 if hParent <> 0 then Result := false;
end; // End of function IsAppWindow;


 
Игорь Шевченко ©   (2004-03-12 23:05) [10]

Мне в свое время нужна была функция, которая показывает окна, кнопки которых находятся на TaskBar"е. Вот что получилось:

function IsWindowOnTaskbar (WindowHandle: HWND): Boolean;
var
 WinStyle, ExStyle : LongInt;
 WindowOwner : HWND;
begin
 WinStyle := GetWindowLong(WindowHandle, GWL_STYLE);
 ExStyle := GetWindowLong(WindowHandle, GWL_EXSTYLE);
 WindowOwner := GetWindow(WindowHandle, GW_OWNER);
 Result := (WindowOwner = 0) and
    ((ExStyle and WS_EX_TOOLWINDOW) = 0) and
    ((WinStyle and WS_VISIBLE) <> 0);
end;


Тоже не совсем соответствует функции в win32k, но довольно близко. Картинка получается похожая на окна, перечисляемые во вкладке "Приложения" в Task Manager


 
DVM ©   (2004-03-13 11:28) [11]


> Игорь Шевченко ©   (12.03.04 23:05) [10]

И моя и твоя функции путаются с окнами Microsoft Excel 2000/xp.
Если запустить эксель и создать в нем одна за другой две книги, то окон экселя получается три, а не 2 как на таскбаре.

Причем с вордом то же самое проходит нормально.


 
Игорь Шевченко ©   (2004-03-15 13:22) [12]

DVM ©   (13.03.04 11:28)

Спасибо, поищем :)



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-1081862767
Dentist
2004-04-13 17:26
2004.05.02
Разворачивание окна


14-1081496161
Balkon
2004-04-09 11:36
2004.05.02
Полный Uninstall !


3-1080901697
Skulll
2004-04-02 14:28
2004.05.02
Веб клиент на PHP, ASP, JSP или CGI


6-1078749494
GanibalLector
2004-03-08 15:38
2004.05.02
сетевые подключения


4-1078224931
Лекс
2004-03-02 13:55
2004.05.02
GetWindow в NT