¿Cómo puedo obtener un objeto HDC de un objeto CDC?
Pregunta
Tengo un objeto, dc, de tipo CDC y me gustaría obtener un objeto HDC.
Leí la documentación de MSDN aquí , pero realmente no lo entiendo.
¿Puede alguien proporcionarme un breve ejemplo / explicación sobre cómo hacer esto?
Solución
La clase CDC tiene definido el operador HDC ()
que permite al compilador convertir un objeto CDC a HDC implícitamente. Por lo tanto, si tiene CDC * y una función que toma HDC, simplemente desreferencia el puntero y lo envía a la función.
Otros consejos
Cuando tenga un objeto CDC
, se convertirá implícitamente a HDC
cuando sea necesario:
CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
Si tiene un puntero al objeto CDC
, el uso de la función GetSafeHdc
se verá más claro:
CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
CDC
es una clase C ++ que, con una aproximación razonable, encapsula un HDC, que es un identificador para el contexto de un dispositivo.
La documentación a la que se vincula describe un operador
de conversión, que es una construcción C ++ que las clases pueden proporcionar para permitir la conversión implícita de una instancia de una clase a otro tipo. En este caso, la conversión implícita da como resultado el identificador subyacente (HDC) que encapsula la instancia CDC
.
Puede realizar la conversión utilizando una instancia de CDC
en cualquier lugar donde necesite convertirse a un HDC
.
Más simple:
void f( const CDC& cdc )
{
HDC hdc = cdc;
// use hdc here
}
HDC hDC = dc;
Solo asignelo.
CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
//success...
}