Wyświetlanie grafiki 2D bez okna, na pierwszym planie w Windows

Odpowiedz Nowy wątek
hellelujah
2011-10-19 17:46
hellelujah
0

Muszę wyświetlić grafikę (wektorową albo bitmapę) w Windows, bez użycia okna, na pierwszym planie (jak "zawsze na wierzchu"). Coś w rodzaju znaku wodnego (docelowo ma to być półprzezroczyste). Jeszcze nigdy nie wyświetlałem grafiki, więc zacząłem od szukania w Google, ale niestety wszystko, co znalazłem, opisywało tryby okienkowe albo pełnoekranowe. Proszę przynajmniej o nakierowanie, z czego mam skorzystać, żeby osiągnąć taki efekt?

Zależy mi jeszcze na tym, żeby wszystkie zdarzenia myszy "przenikały" przez ten znak wodny, żeby można było korzystać z kontrolek schowanych pod spodem.

Pozostało 580 znaków

2011-10-19 17:56

Rejestracja: 9 lat temu

Ostatnio: 5 miesięcy temu

Lokalizacja: Kosmos

0

Możesz użyć GDI, formę daj na przezroczystą bez ramek. Z tego co wiem, jak dasz przezroczystość tej grafiki to automatycznie przy przezroczystości formy, będzie on przenikalny.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

hellelujah
2011-10-20 15:38
hellelujah
0
xeo545x39 napisał(a)

formę daj na przezroczystą bez ramek

Możesz powiedzieć, o który dokładnie styl Ci chodzi? Bo domyślam się, że chodzi o pierwszy parametr CreateWindowEx(), ale jaką mam tam dać wartość? Próbowałem i próbowałem, ale albo całe okno i bazgroły w nim były widoczne, albo jedno i drugie znikało...

Pozostało 580 znaków

msm
2011-10-20 15:49
msm
Administrator

Rejestracja: 10 lat temu

Ostatnio: 15 minut temu

0

Trochę czasu minęło od kiedy się takimi rzeczami bawiłem, ale z tego co pamiętam to http://msdn.microsoft.com/en-[...]op/ms633504%28v=vs.85%29.aspx powinno dać radę.

Pozostało 580 znaków

hellelujah
2011-10-20 16:42
hellelujah
0

Hmm. Zrobiłem tak:
HDC hdcEkran = GetWindowDC(GetDesktopWindow());
Wcześniej mniej więcej to samo dostawałem przy pomocy:
HDC hdcEkran = GetWindowDC(NULL);
W obu przypadkach mogę rysować "na wierzchu" wszystkich okien, ale jeśli coś się zaczyna dziać na obszarze zajętym przez grafikę, to ona jest w tym miejscu nadpisywana. Co mam zrobić, żeby np. przy najechaniu na jakiś przycisk schowany pod spodem nie wyskakiwał on na wierzch, a nadal odbierał zdarzenia myszy?

PS: Przy tworzeniu zwykłego okna w WinAPI mogę podpiąć do niego pętlę obsługującą zdarzenia, czy da się tak zrobić z "oknem" uzyskanym od GetDesktopWindow()? Jeśli tak, to jak? I czy to rozwiąże problem? ;)

Pozostało 580 znaków

Odpowiedz

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