Главная страница
    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.45 MB
Время: 0.011 c
1-82208
MadGhost
2003-09-12 10:52
2003.09.25
можно ли сортировать массив?


3-82054
SkullNet
2003-09-02 18:12
2003.09.25
Определение кол-ва записей отображаемых DBGrid


1-82236
maxim2
2003-09-12 07:22
2003.09.25
Передача переменных


1-82269
Sam Stone
2003-09-15 17:40
2003.09.25
FocusedNode


1-82262
3APA3A
2003-09-14 00:51
2003.09.25
Создание форм в Runtime из DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский