Question

J'ai un objet, dc, de type CDC et j'aimerais obtenir un objet HDC.

J'ai lu la documentation MSDN ici . , mais ne le comprends pas vraiment.

Quelqu'un peut-il me fournir un bref exemple / une explication sur la manière de procéder?

Était-ce utile?

La solution

La classe CDC a l'opérateur HDC () défini, ce qui permet au compilateur de convertir un objet CDC en HDC implicitement. Par conséquent, si vous avez CDC * et une fonction prenant HDC, il vous suffit de déréférencer le pointeur et de l'envoyer à la fonction.

Autres conseils

Lorsque vous avez un objet CDC , il sera implicitement converti en HDC si nécessaire:

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

Si vous avez un pointeur sur l'objet CDC , alors utiliser la fonction GetSafeHdc sera plus clair:

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

CDC est une classe C ++ qui, pour une approximation raisonnable, encapsule un HDC, qui est un descripteur de contexte de périphérique.

La documentation à laquelle vous vous associez décrit un opérateur de conversion, qui est une construction C ++ que les classes peuvent fournir pour permettre la conversion implicite d'une instance d'une classe en un autre type. Dans ce cas, la conversion implicite aboutit au descripteur sous-jacent (HDC) encapsulé par l'instance CDC .

Vous pouvez effectuer la conversion en utilisant une instance CDC où qu'elle soit convertie en HDC .

Le plus simplement:

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

    // use hdc here
}
HDC hDC = dc;

Attribuez-le simplement.

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top