• ベストアンサー

hDC=::GetDC(m_hWnd)とhDC=GetDC(m_hWn

hDC=::GetDC(m_hWnd)とhDC=GetDC(m_hWnd)の違いについて 表題について,お伺いします。 ビットマップをダイアログに表示するソースコードを 書いてますが,参考書やさまざまなHPでは, ウィンドウハンドルをゲットする際に hDC=::GetDC(m_hWnd) ○ ↑と書かれております。 hDC=GetDC(m_hWnd)  × ↑はなぜだめなのでしょう。  ●このスコープ演算子::は何の為につけているのですか? ::が無いとエラーになるので必要みたいですが・・

質問者が選んだベストアンサー

  • ベストアンサー
  • jk39
  • ベストアンサー率54% (366/670)
回答No.1

どういうエラー(リンクエラー、コンパイルエラー)なのかがわからないので、 あくまで憶測ですが、 Windows.hで定義されているGetDC()の他に、 別のスコープに(例えばクラスのメソッドとして)、 GetDC()が定義されているのではないでしょうか? 上記の状態でスコープ演算子がないときには、 同じクラス(スコープ)にあるGetDC()を先に呼ぶことになるので、 目的のWindows.hのGetDC()を呼ぶことができないのだと思います。

参考URL:
http://wisdom.sakura.ne.jp/programming/cpp/cpp7.html
NEW2010
質問者

お礼

「GetDC()」は「Winuser.h 内で宣言」とありました! つまりMFCを利用する際にはグローバルスコープ解決演算子が 必要になる訳ですね。 ::がなければMFCの「GetDC()」を使ってしまうので 「GetDCが不正な実引数1個を伴って・・・」という エラーが出た様です。 参考のHPが理解にとても役に立ちました。 ありがとうございました。

関連するQ&A