Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rysowanie po liscie kontaktow, GDI
Konnekt | Forum > Developerzy > Tworzenie wtyczek
Mucha
Najpierw subclassuje IMIG_MAINWND, potem przechwytuje windowsowe komunikaty do niego docierajace. Przy WM_DRAWITEM przechwytuje strukture sUICnt, i w zaleznosci od cech kontaktu rysuje przy nim strzalke w roznych kolorach. No i wszystko jest OK ale obiekty GDI sie nie usuwaja. Probowalem na 2 sposoby:
1. Przechwytuje HWND ListView32, tworze na nim nowe HDC (no ale sie obiekty GDI nie usuwaja)
2. Korzystam z istniejacego HDC, przechwyconego w DrawItemStruct, ale wtedy moja strzalka jest "zarysowywana" przez ikonke kontaktu i nazwe, jesli przepuszcze komunikaty to HDC jest juz zwolnione i nic sie nie rysuje.

Co do 1 to HDC probowalem zwalniac poprzez ReleaseDC, DeleteDC, ZeroMemory. Kazde pozostawialo obiekty GDI.

No i jak to zrobic?
Olórin
Skontaktuj się z Trialem, on będzie najlepiej zorientowany w tej kwesti.
Trial
wiec tak ....

QUOTE
1. Przechwytuje HWND ListView32, tworze na nim nowe HDC (no ale sie obiekty GDI nie usuwaja)

nie rozumiem co to znaczy: "obiekty GDI sie nie usuwaja"
z tym rysowaniem itemow jest troszke jazda.. to jest zlozony zabieg smile.gif
gdzies ten temat juz na forum poruszalem jak sie do tego zabieralem.
wiec przejzyj ten topik tam powinna byc odpowiedz na twoje pytanie - jak rysowac.

mozesz potestowac jeszcze w taki sposob ze pozwalasz sie odrysowac oryginalnemu oknu
i pozniej ty przdechwytujesz DC i malujesz po nim. i tyle

jest maly ratunek ze w niedalekiej przyszlosci zrobie interfejs do tloka i bedzie mozna sobie
robic na liscie generalnie wszystko

aaa i pamietaj zwlaniaj zawsze DC w ten sposob ReleasDC zadne ZeroMemory i takie tam...
po drugie poczytaj o GDI jak to wyglada ze powinienes przechowywac stare uzadzenie DC a na koniec po wszystkich
operacjach je przywrocic na stare miejsce.. i takie tam


czytac czytac i jeszcze raz czytac blink.gif unsure.gif wacko.gif ohmy.gif huh.gif - ostatnio troche zwariowalem wink.gif
Mucha
OK, juz rozgryzlem, ursus mi podpowiedzial, nie usuwalem ikonki w jednym miejscu (destroyicon), stad te GDI gromadzace sie. Jakby komus sie przydalo to prezentuje moj sposob:
1. Subclassujemy w IStart IMIG_MAINWND
2. Przechwytujemy windowsowe komunikaty
3. Z WM_DRAWITEM bierzemy strukture DrawItemStruct, tam mamy id itemu na liscie
4. Jesli chcemy pobrac jakis parametr kontaktu np status to korzystamy z sUICnt przekazywanego w lparam
5. Pobieramy uchwyt do ListView32
6. GetDC(lista), rysujemy, ReleaseDc(lita,Dc)
7. Koniec
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.