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... }