Главная страница
    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.012 c
3-82140
Haba
2003-09-03 17:28
2003.09.25
DBGrid, XML и DecimalSeparator


14-82466
MsGuns
2003-09-01 20:40
2003.09.25
Голосуем за партию дельфинов


1-82306
Regul
2003-09-11 21:04
2003.09.25
Microsoft Equation


6-82381
Artem
2003-07-28 17:01
2003.09.25
Передача файлов по сети


14-82435
Дон Хуан
2003-08-21 18:35
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский