2009-08-05 120 views

答えて

10

CDCクラスコンパイラが暗黙的にHDCにCDCオブジェクトを変換することを可能にするoperator HDC()が定義されています。したがって、あなたがCDC *とHDCをとる関数を持っていれば、ポインタを逆参照して関数に送るだけです。

+0

ありがとう、ありがとう!私は '演算子'のキーワードをあまりにも多く使いすぎていないので、それは私を捨てた。 – samoz

2

ただ割り当てます。

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

CDCは、妥当な近似値で、デバイスコンテキストのハンドルであるHDCをカプセル化するC++クラスです。

あなたがリンクしているドキュメントには、クラスのインスタンスから他のタイプへの暗黙的な変換を可能にするためにクラスが提供できるC++構文である変換operatorが記述されています。この場合、暗黙の変換により、CDCインスタンスがカプセル化する基になるハンドル(HDC)が生成されます。

CDCインスタンスを使用して、HDCに変換する必要がある任意の場所で変換を実行できます。あなたが必要なことが暗黙のうちにHDCに変換されますCDCオブジェクトがある場合

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

    // use hdc here 
} 
14

は::

最も簡単に

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

をあなたはCDCオブジェクトへのポインタを持っている場合は、機能GetSafeHdcを使用すると、より多くのを見ていきますクリア:

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

GetSafeHdc()はトリックをありがとう、ありがとう。 – TechNyquist

関連する問題