Przeźroczyste okno na pulpicie

Odpowiedz Nowy wątek
2011-06-01 22:41
dendo
0

Witam!

Ostatnio zapragnąłem napisać program, który pokazywałby na pulpicie statystyki(głównie tekst) coś na wzór linuksowego conky
http://www.linuxscrew.com/wp-content/uploads/2007/09/conky.jpg

Probowalem wiec zrobić okno WS_EX_TRANSPARENT i za pomocą funkcji TextOut wypisać dany tekst, ale nie dość, że nie widać tekstu, to jeszcze okno podczas ruszania bałagani(przestaje wyswietlać ikony, pasek na dole znika, okna zreszta też).

Czy istnieje jakiś inny sposób aby wyświetlić tylko tekst na pulpicie? Czy można to zrobić bez tworzenia nowego okna i w nim osadzania tych wszystkich elementów?

Dzieki

Pozostało 580 znaków

2011-06-02 01:57
winapi
0

pulpit sam w sobie jest oknem. Może rysuj po nim(?)

Pozostało 580 znaków

2011-06-02 06:28
Rev
0

Czy można to zrobić bez tworzenia nowego okna i w nim osadzania tych wszystkich elementów?

W teorii się da, w praktyce lepiej jest zrobić okno, tzw. "layered", a oknu rodzica ustawić na kontrolkę, która wyświetla pulpit.

http://msdn.microsoft.com/en-us/library/ms997507.aspx


Pozostało 580 znaków

2011-06-02 13:53
0

Jeśli w Builderze, to forma ma: TransparentColor i TransparentColorValue. Ustawiasz na true i wartość koloru, która jest tłem formy. I tyle.
Jeśli w WinAPI, to o ile pamiętam, obsługujesz WM_ERASEBKGND i nic tam nie rysujesz i zwracasz nie zero.

Pozostało 580 znaków

2011-06-07 22:34
dendo
0

Dziekuje za odpowiedzi. Uzylem stylu "layered" ale jest pewien problem. Ustawilem okno za pomoca SetWindowPos( hWnd, HWND_BOTTOM, ... ) i rzeczywiscie okno sie pojawia na samym dole ale po uzyciu kombinacji "Windows + D" okno znika. Jesli uzyje HWND_TOPMOST program bedzie nachodzil na akutalne okna a ma go byc widac jedynie "nad" pulpitem.

Dzieki

Pozostało 580 znaków

2011-06-07 22:42
Rev
0

Zamiast SetWindowPos użyj SetParent i ustal na kontrolkę wyświetlającą pulpit (w necie jest pełno przykładów jak ją znaleźć).


Pozostało 580 znaków

2011-06-07 22:49
dendo
0

Czyli powinienem dopisać:
SetParent( hWnd, GetDesktopWindow());

Źle czy dobrze i tak nie uzyskuje zamierzonego efektu. Okno pojawia sie nad przeglądarką a jak nacisne Win + D znika.

Dzieki

Poza tym, wydaje mi sie to zbędne skoro tworze okno komendą hWnd = CreateWindowEx(... , HWND_DESKTOP, ...)

nie desktop window, nie pamiętam dokładnie, ale jakieś dziecko od program manager - Rev 2011-06-08 00:56

Pozostało 580 znaków

2011-06-07 23:16
0

A spróbuj ustawić dla okna styl DS_CONTROL (jakoś tak się to nazywało - pogoogluj za nazwą bo mi się nie chce) - chodzi o to, że wtedy okno zachowuje się nie jak okno, ale jak kontrolka - wtapia się na stałe w rodzica.

Uważam jednak, że lepiej by było rysować po pulpicie.

edytowany 1x, ostatnio: othello, 2011-06-07 23:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0