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.
Fórum › C / C++
GDI objects
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++.
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
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
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
Zobrazení Server Objects & Events ve Visual Studio — založil TomasZelenka
Tisk pomocí Windows GDI — založil Jan Netopil
Moderátoři diskuze