Frage

Ich habe ein Objekt, dc, vom Typ CDC und ich mag ein HDC-Objekt erhalten.

las ich die MSDN-Dokumentation hier , aber es ist nicht wirklich verstehen.

Kann jemand geben mir ein kurzes Beispiel / Erklärung, wie dies zu tun?

War es hilfreich?

Lösung

CDC-Klasse hat operator HDC() definiert, die der Compiler ermöglicht ein CDC-Objekt HDC implizit zu konvertieren. Daher, wenn Sie haben CDC * und eine Funktion, die HDC nimmt dann einfach den Zeiger dereferenzieren und es an die Funktion senden.

Andere Tipps

Wenn Sie Objekt CDC haben, wird es implizit konvertiert werden, um HDC bei Bedarf:

CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();

Wenn Sie Zeiger Objekt CDC dann Funktion GetSafeHdc mit aussehen wird klar:

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();

CDC ist eine C ++ Klasse, die - auf eine vernünftige Annäherung - kapselt einen HDC, die ein Handle zu einem Gerätekontext ist

.

Die Dokumenation, die Sie verlinken auf beschreibt eine Umwandlung operator, die ein C ++ konstruieren, dass Klassen liefern können implizite Konvertierung von einer Instanz einer Klasse zu einer anderen Art zu ermöglichen. In diesem Fall ist die impliziten Konvertierungsergebnisse in dem zugrunde liegenden Griff (HDC), die die CDC Instanz kapselt.

Sie können die Konvertierung durchführen, indem eine CDC Instanz überall waren mit ihm auf ein HDC umgewandelt werden muss.

Am einfachsten:

void f( const CDC& cdc )
{
    HDC hdc = cdc;

    // use hdc here
}
HDC hDC = dc;

Just zuweisen.

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top