XT Knowledge Base
Hauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz | Aktuelle Version

Snippets

(Unterschied zwischen Versionen)

 
(Der Versionsvergleich bezieht 1 dazwischenliegende Version mit ein.)
Zeile 20: Zeile 20:
};
};
</pre>
</pre>
-
Quelle: [http://www.relisoft.com/win32/gdileaks.html Reliable Software - GDI Leaks]
+
*Quelle: [http://www.relisoft.com/win32/gdileaks.html Reliable Software - GDI Leaks]
-
Also Useful: [http://www.freedownloadmanager.org/downloads/GDIView_49337_p/free.htm GDIView] (Tool which shows which GDI resources are allocated from which process)
+
*Also Useful: [http://www.freedownloadmanager.org/downloads/GDIView_49337_p/free.htm GDIView] (Tool which shows which GDI resources are allocated from which process)
 +
 
 +
= Converting GUID to char* =
 +
<pre><code class="cpp">
 +
#include <atlconv.h>
 +
 
 +
void main(void)
 +
{
 +
  USES_CONVERSION;
 +
  OLECHAR* bstrGuid;
 +
  StringFromCLSID(<GUID>, &bstrGuid);
 +
  printf("%s\n", W2A(bstrGuid));
 +
  ::CoTaskMemFree(bstrGuid);
 +
}
 +
</code></pre>

Aktuelle Version vom 08:42, 20. Mär. 2012

Finding GDI Leaks by counting GDI objects

class DbgGuiLeak
{
public:
    DbgGuiLeak ()
    {
        _guiResCount = ::GetGuiResources (::GetCurrentProcess (), GR_GDIOBJECTS);
    }
    ~DbgGuiLeak ()
    {
        int leaks = ::GetGuiResources (::GetCurrentProcess (), GR_GDIOBJECTS) - _guiResCount;
        if (leaks != 0)
        {
            std::cout << "Gui Resources Leaked: " << leaks << std::endl;
        }
    }
private:
    unsigned _guiResCount;
};

Converting GUID to char*

<code class="cpp">
#include <atlconv.h>

void main(void)
{
  USES_CONVERSION;
  OLECHAR* bstrGuid;
  StringFromCLSID(<GUID>, &bstrGuid);
  printf("%s\n", W2A(bstrGuid));
  ::CoTaskMemFree(bstrGuid);
}
</code>