CDCタイプのオブジェクトdcがあり、HDCオブジェクトを取得したいと思います。
ここでMSDNのドキュメントを読みましたが、よくわかりません。
誰かがこれを行う方法についての簡単な例/説明を私に提供できますか?
オブジェクトがある場合、必要に応じCDC
て暗黙的に変換されます。HDC
CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
CDC
オブジェクトへのポインタがある場合、関数の使用GetSafeHdc
はより明確になります。
CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
CDCクラスはoperator HDC()
、コンパイラがCDCオブジェクトをHDCに暗黙的に変換できるようにすることを定義しています。したがって、CDC *とHDCを受け取る関数がある場合は、ポインターを逆参照して関数に送信するだけです。
CDC
はC++クラスであり、妥当な概算で、デバイスコンテキストへのハンドルであるHDCをカプセル化します。
リンク先のドキュメントは、変換について説明していますoperator
。これは、クラスのインスタンスから他のタイプへの暗黙的な変換を可能にするためにクラスが提供できるC++構造です。この場合、暗黙的な変換により、CDC
インスタンスがカプセル化する基になるハンドル(HDC)が生成されます。
CDC
に変換する必要がある場合は、どこでもインスタンスを使用して変換を実行できますHDC
。
最も簡単に:
void f( const CDC& cdc )
{
HDC hdc = cdc;
// use hdc here
}
HDC hDC = dc;
割り当てるだけです。
CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
//success...
}