Domanda

Ho un oggetto, dc, di tipo CDC e vorrei ottenere un oggetto HDC.

Ho letto la documentazione MSDN qui , ma non lo capisco davvero.

Qualcuno può fornirmi un breve esempio / spiegazione su come farlo?

È stato utile?

Soluzione

La classe CDC ha operatore HDC () che consente al compilatore di convertire implicitamente un oggetto CDC in HDC. Quindi se hai un CDC * e una funzione che prende HDC allora devi semplicemente dereferenziare il puntatore e inviarlo alla funzione.

Altri suggerimenti

Quando hai un oggetto CDC , questo sarà implicitamente convertito in HDC quando necessario:

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

Se hai puntatore all'oggetto CDC , allora usando la funzione GetSafeHdc apparirà più chiaro:

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

CDC è una classe C ++ che - per una ragionevole approssimazione - incapsula un HDC, che è un handle per un contesto di dispositivo.

La documentazione a cui si collega descrive un operatore di conversione, che è un costrutto C ++ che le classi possono fornire per consentire la conversione implicita da un'istanza di una classe a un altro tipo. In questo caso la conversione implicita si traduce nell'handle sottostante (HDC) che incapsula l'istanza CDC .

Puoi eseguire la conversione utilizzando un'istanza CDC ovunque sia necessario convertirla in HDC .

Più semplicemente:

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

    // use hdc here
}
HDC hDC = dc;

Assegnalo.

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top