GetDC()について

以下、自分用のメモなので。GDIとか詳しくなかったんで。

for( int i=0; i<10; ++i ){
  HDC dc = ::GetDC( this->m_picbox2.GetSafeHwnd() );
}// i

とすると、同じウィンドウのデバイスコンテキストを取得してると思うのだが、様々に異なる値が10回返されてくる。(ぉぃぉぃ、、)
なので例えば、ある時点でDCを取得し、それに対してフォントを、SelectObjectしたとしよう。

    HFONT font = CreateFont(44, 26, 213, 0,
      FW_NORMAL, FALSE, FALSE, FALSE,
      ANSI_CHARSET, OUT_DEFAULT_PRECIS,
      CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
      DEFAULT_PITCH | FF_ROMAN,
      _T("Times New Roman") );

    SelectObject(hDC, font);

然る後に、このhDCを使って、TextOutすれば、指定したフォントでテキストは出力されるのだが、hDCを使わずに、同じウィンドウだからといってまたGetDCし直したものを使うと、後者の場合は、hDCに対して先ほどSelectObject()で指定したフォントではテキストは描かれない。

 TextOut(hDC, 20, 128, _T("little Fuga"), 12);// 指定したフォントで描画
 TextOut(::GetDC( this->m_picbox2.GetSafeHwnd() )
          , 20, 128, _T("little Fuga"), 12);// フォント指定が反映されてない

ので気をつける。
バイスコンテキストとはウィンドウの中に保持されているものなのかと思っていたがどうやら動的に、GetDCが呼ばれる度にその都度、動的に確保されるもののようだ。