Comment puis-je obtenir un objet HDC à partir d'un objet CDC?
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?
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...
}