GDI objects – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

GDI objects – C / C++ – Fórum – Programujte.comGDI objects – C / C++ – Fórum – Programujte.com

 

LJ10240
Stálý člen
25. 4. 2009   #1
-
0
-

Mam problem s narustem GDI objektu, v tomto miste pribudou +4 GDIo:
//////////////////
(...)
case WM_COMMAND:
switch( LOWORD(wParam) ){
case IDBSTART:
EnableWindow(GetDlgItem(hwnd, IDBSTART), FALSE);
EnableWindow(GetDlgItem(hwnd, IDBSTOP), TRUE);
EnableWindow(GetDlgItem(hwnd, IDBPAUSE), TRUE);
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) timer, hwnd, 0, NULL);
break;
(...)
/////////////////
a na par dalsich mistech ve zdroji taky

Pokud to zmenim na
//////////////////
(...)
case WM_COMMAND:
switch( LOWORD(wParam) ){
case IDBSTART:
EnableWindow(GetDlgItem(hwnd, IDBSTART), FALSE);
EnableWindow(GetDlgItem(hwnd, IDBSTOP), TRUE);
MessageBox(0,"","",0);//EnableWindow(GetDlgItem(hwnd, IDBPAUSE), TRUE);
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) timer, hwnd, 0, NULL);
break;
(...)
/////////////////
, tak predtim nez se zobrazi MessageBox, je narust GDI objektu stale +4...

Metodou ohranicovani MessageBoxem jsem se pokusil zjistit, kde je probelm, ale chybne misto jsem nenasel... Nutne s tim potrebuji pomoct..

Napr.:
////////////
SetDlgItemText(hwnd,IDStaticKOLAS, get);
////////////
ma narust +2 GDI obj.

Vzhledem kt omu, ze posledni cast zdroje je volana ve smycce, tak je to docela problem... (10000 GDIo = Not responding...)

Predem diky za odpovedi.

Nahlásit jako SPAM
IP: 85.132.191.–
Jura
~ Anonymní uživatel
637 příspěvků
25. 4. 2009   #2
-
0
-

Zdravím,

tak ten kód jsem jen letmo proletěl, ale nezdá se mi, že by volaní EnableWindow, SetDlgItemText mělo vliv na nárust GDI objektů. Chybu bych na tvém místě hledal někde úplně jinde. Zkontroluj si jestli po každém GetDC voláš ReleaseDC a po BeginPaint zase EndPaint(jen v reakci na zprávu WM_PAINT). A jestli můžu doporučit, tak občas není odvěci si takovou funkčnost zabalit do třídy a využít výhod, které ti nabízí RAII . Samozřejmě to platí za předpokladu, že používáš C++.

Nahlásit jako SPAM
IP: 85.207.192.–
LJ10240
Stálý člen
25. 4. 2009   #3
-
0
-

Ve zprave WM_PAINT mam vsude EndPaint()....

Nahlásit jako SPAM
IP: 85.132.191.–
Jura
~ Anonymní uživatel
637 příspěvků
25. 4. 2009   #4
-
0
-

Totiž EnableWindow ani SetDlgItemText určitě nevytváří žádné GDI objekty, takže tam chyba nebude. Takže pokud můžeš přibal celý projekt, nebo aspoň větší kus zdrojáku a třeba se někdo najde, kdo bude mít čas a chuť hledat GDI leaks.

Třeba pomůže:
http://msdn.microsoft.com/cs-cz/magazine/cc301756(en-us).aspx

Nahlásit jako SPAM
IP: 85.207.192.–
LJ10240
Stálý člen
26. 4. 2009   #5
-
0
-

Chyba nalezena - nasel jsem si zdroj na zmenu barvy pozadi a textu editu volany ve zprave WM_CTLCOLOREDIT:, ta je take volana pri kazde zmene editu a opravdu tam nebylo uvoneno HDC...

Nahlásit jako SPAM
IP: 85.132.191.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 61 hostů

Podobná vlákna

GDI, GDI+, nebo DirectX — založil Kvarköny

Grafika GDI vs GDI+ — založil Honza

Sort list of objects — založil MALP

Tisk pomocí Windows GDI — založil Jan Netopil

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý