Come posso ottenere un oggetto HDC da un oggetto CDC?
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?
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...
}