CDCオブジェクトからHDCオブジェクトを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1234303

  •  22-07-2019
  •  | 
  •  

質問

タイプ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...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top