Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Вниз

Transparent icons and Active Desktop   Найти похожие ветки 

 
YY   (2003-07-21 22:53) [0]

Уж и не знаю, куда податься....
Может, тут кто-нибудь сможет подсказать, как сделать прозрачным фон иконок на рабочем столе при включённом Active Desktop?
Точнее, проблема со своевременным обновлением этого фона под иконками.

Вот такой код

LVHandle:=FindWindowEx(FindWindowEx(FindWindow("Progman","Program Manager"),0,"SHELLDLL_DefView",""),0,"SysListView32","");
ListView_SetTextBkColor(LVHandle,$FFFFFFFF);
InvalidateRect(LVHandle,0,True);
UpdateWindow(LVHandle);

без AD работает прекрасно, но с включённым Active Desktop фон остаётся на месте и "стирается" только если провести оконом по иконкам.
Некоторые считают это глюком, но, и в правду, IMHO Active Desktop освещён в документации Microsoft крайне скупо и как он работает не понятно.


 
Klev   (2003-07-21 23:42) [1]

Вообщем я сам не использую Active desktop, и другим не советую.
Но если запустить что-нибудь похожее на Spy32 for windowz(утилитку для просмотра информации об окнах), то можно заметить, что при включенном AD появляется новое окно, с классом "Internet Explorer_Server". Его-то и надо перерисовать.
Вот кусочек кода(мой вариант):


uses windows,CommCtrl;
procedure Desktop_transparent;
var Window,ie: HWND;
begin
Window := FindWindow("Progman", "Program Manager");
Window := FindWindowEx(Window, HWND(nil), "SHELLDLL_DefView", "");
Window := FindWindowEx(Window, HWND(nil), "SysListView32", "");
ListView_SetTextBkColor(Window, $ffffffff);
ListView_SetTextColor(Window, 16777215);
ListView_RedrawItems(Window, 0, ListView_GetItemCount(Window) - 1);
UpdateWindow(Window);
ie:=findwindow("Internet Explorer_Server",nil);
InvalidateRect(ie,0,True);

( ie)
Вообщем я сам не использую Active desktop, и другим не советую.
Но если запустить что-нибудь похожее на Spy32 for windowz(утилитку для просмотра информации об окнах), то можно заметить, что при включенном AD появляется новое окно, с классом "Internet Explorer_Server". Его-то и надо перерисовать.
Вот кусочек кода(мой вариант):


uses windows,CommCtrl;
procedure Desktop_transparent;
var Window,ie: HWND;
begin
Window := FindWindow("Progman", "Program Manager");
Window := FindWindowEx(Window, HWND(nil), "SHELLDLL_DefView", "");
Window := FindWindowEx(Window, HWND(nil), "SysListView32", "");
ListView_SetTextBkColor(Window, $ffffffff);
ListView_SetTextColor(Window, 16777215);
ListView_RedrawItems(Window, 0, ListView_GetItemCount(Window) - 1);
UpdateWindow(Window);
ie:=findwindow("Internet Explorer_Server",nil);
InvalidateRect(ie,0,True);

updatewindow(ie);
end;


 
YY   (2003-07-25 00:15) [2]

Спасибо большое. Действительно, надо было просто обновить это окно. Однако тут есть одна неприятность: вместе с этим окном перерисовываются и все окна, его перекрывающие (грубо говоря, все развёрнутые окна). Поэтому вопрос несколько меняется: как бы мне обновить окно, не перерисовывая перекрывающих его окон?
Например, когда я нажимаю F5, перерисовывается только Desktop и все окна остаются в покое.



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

Форум: "WinAPI";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-82237
mishgan
2003-09-08 10:29
2003.09.25
Есть ли в DELPHI аналог функции AbnormalTermination()?


4-82548
anonym
2003-07-23 00:34
2003.09.25
Получение хэндла запускаемого приложения


3-82059
kuchumovkv
2003-09-02 17:47
2003.09.25
Работа с БД Lotus Notes


14-82503
Сатир
2003-09-04 17:24
2003.09.25
Сказка об Сисадмине


14-82441
Ihor Osov'yak
2003-09-09 15:06
2003.09.25
аяяй..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский