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?

¿Fue útil?

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...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top