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