10

CDCタイプのオブジェクトdcがあり、HDCオブジェクトを取得したいと思います。

ここでMSDNのドキュメントを読みましたが、よくわかりません。

誰かがこれを行う方法についての簡単な例/説明を私に提供できますか?

4

5 に答える 5

14

オブジェクトがある場合、必要に応じCDCて暗黙的に変換されます。HDC

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

CDCオブジェクトへのポインタがある場合、関数の使用GetSafeHdcはより明確になります。

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
于 2009-08-05T16:53:50.220 に答える
11

CDCクラスはoperator HDC()、コンパイラがCDCオブジェクトをHDCに暗黙的に変換できるようにすることを定義しています。したがって、CDC *とHDCを受け取る関数がある場合は、ポインターを逆参照して関数に送信するだけです。

于 2009-08-05T16:30:23.107 に答える
3

CDCはC++クラスであり、妥当な概算で、デバイスコンテキストへのハンドルであるHDCをカプセル化します。

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

CDCに変換する必要がある場合は、どこでもインスタンスを使用して変換を実行できますHDC

最も簡単に:

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

    // use hdc here
}
于 2009-08-05T16:32:32.477 に答える
2
HDC hDC = dc;
于 2009-08-05T16:28:25.217 に答える
2

割り当てるだけです。

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
于 2009-08-05T16:29:44.027 に答える