Comment puis-je obtenir un object HDC à partir d’un object CDC?

J’ai un object, dc, de type CDC et j’aimerais obtenir un object HDC.

J’ai lu la documentation MSDN ici , mais je ne la comprends pas vraiment.

Quelqu’un peut-il me donner un bref exemple / explication sur la façon de le faire?

La classe CDC a l’ operator HDC() défini qui permet au compilateur de convertir implicitement un object CDC en HDC. 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.

Lorsque vous avez un object 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 un object CDC , alors la fonction GetSafeHdc sera plus claire:

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

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

La documentation à laquelle vous accédez décrit un operator 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 entraîne le handle sous-jacent (HDC) que l’instance CDC encapsule.

Vous pouvez effectuer la conversion en utilisant une instance CDC n’importe où si elle doit être convertie en HDC .

Plus simplement:

 void f( const CDC& cdc ) { HDC hdc = cdc; // use hdc here } 
 HDC hDC = dc; 

Atsortingbuez-le simplement.

 CDC cdc = something. HDC hdc = cdc; if (hdc != 0) { //success... }