Czy któryś z was Wielkich Hakerów napisał kiedyś kod w C++ do odtwarzania napisów do filmów np. na pulpicie, zarówno w formacie z klamrą jaki i czasowym?
Jeśli chodzi o zapis czasowy to chyba nie ma problemu: wczytujesz całą linie do jakiejś zmiennej szukasz trzeciego dwukropka i znak przed nim ucinasz i masz czas w którym to wyświetlić. W zapisie z klarami to podobnie tylko czas jest zapisany w ramkach i zbytnio nie wiem jak przeliczeć to na HHSS. Najprościej stworzyć tablicę [ilosc_linii][2] i co sekundę sprawdzanie czy jest taki czas w [aktualna_linia][0] i wyświetlanie napisu z [aktualna_linia][1]. Wyświetlanie na pulpicie to po prostu pobranie uchwytu pulpitu (chyba 0) i rysowanie po nim.
Jak chcesz to mogę napisać odpowiednie funkcje, tylko nie wiem czy do wtorku będzie to aktualne.
Największy problem jest w tym jak te napisy wyświetlać, z odczytem już sobie poradziłem ale na pulpicie to nie za bardzo można to wyświetlić bo są problemy z odświerzaniem trzeba jakąś forme stoworzyć z transparentem. Pod Xp nie ma problemu bo tam jest odpowiednia funkcja, ale na 98 to już się zatrzymałem.
Pobierz wskaźnik dfo pulpitu
HWND hwndDesktop=GetDestkopWindow();
A jak masz wskaźnik to powinineś już sobie poradzić z wrzuceniem tekstu;
Pulpit przecież też jest oknem :P
Mozesz od razu pobrac uchwyt kontekstu pulpitu GetDC ( NULL ) ; I wyswietlac tekst przy pomocy TextOut
Hmmm, nie oto mi chodzi czy ktoś kiedyś przglądał się jak są zrobione napisy w jakimś odtwarzaczu? Przy wyświetleniu napisów na pulpicie, trzeba go za każdym razem odświeżyć, a to powoduje chwilowe mrugnięcie całego pulpitu. Na winXP zrobiłem to tak: stworzyłem formę bez ramki z ustawinym transparentem(cała niewidoczna) i na niej wyświetlam napisy i spokojnie odświeżam, ale na win98 nie ma funkcji SetLayeredWindowAttributes i tu właśnie mam problem...
mozesz odswiezyc tylko obszar na ktorym znajduje sie napis i wtedy nie bedzie zadnego brzydkiego efektu mrugniecia obrazu :)
Można, ale cały czas piszę, że nie oto mi chodzi ;] czy ktoś kiedyś zauważył, że napisy w innych odtwarzaczać można przesuwać "łapiąc" je myszką? Właśnie dlatego są one wyświetlane na formie lub na jakimś specjalnym obiekcie, do którego można pobrać uchwyt i robić z nim inne cuda.
wklej.exe
a co to za problem przechwytujesz odpowiedni komunikat i przesuwasz
Myśle, że styl
WS_EX_TRANSPARENT
powinien rozwiązać problem ;)
Styl WS_EX_TRANSPARENT dla formy to byłby dobry pomysł, ale na takiej formie wyświetlanych napisów również nie widać ;] Zastanawiam się by stworzyć Static_Text z parentem NULL i nowa procedurą okna, bo w sumie on jest przeźroczysty. Tylko nie wiem czy ta się tam czcionki zmieniać ... ;] żartuje w C++ all się da ...
A może jest jednak ktoś, kto się tym problemem już zajmował ?
Marcinos napisał(a)
Styl WS_EX_TRANSPARENT dla formy to byłby dobry pomysł, ale na takiej formie wyświetlanych napisów również nie widać
A to ciekawe bo u mnie widać :P
Zastanawiam się by stworzyć Static_Text z parentem NULL i nowa procedurą okna, bo w sumie on jest przeźroczysty.
Nie sądze, żeby to coś dało. No ale próbować można :)
static_text wcale nie ma przezroczystego tla... wiec nie osiagniesz tego efektu w ten sposob, co do stylu WS_EX_TRANSPARENT, to z tym zawsze mialem problemy, nigdy nie pokazywalo mi sie przezroczyste tlo... a nawet jesli juz pokazalo to po przesunieciu formy przezroczyste tlo formy przesuwalo sie razem z forma :P... ale jesli uda Ci sie to jakos porzadnie obsluzyc to moze byc najlepsze wyjscie...
EDIT : Troche sobie poeksperymentowalem i rzeczywiscie mozna dac styl WS_EX_TRANSPARENT np. do klasy okna i spokojnie wyswietlac napisy z przezroczystym tlem
Do jagi:
jak sobie poradziłeś z tym, że już się tło nie przesuwa razem z formą?