• ベストアンサー

LRESULTとHRESULT

身近でよく見かけるものに限ってなかなか探しても見つからないものなのですよね。 よくC++のプログラムで見かける LRESULT型 HRESULT型 いったいどの様な型なのでしょうか? どの様な時に使うのか教えてください。

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

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.4

もう少しだけ補足。 ATLは、COM実装等に使うことを意識したライブラリなのでHRESULTとはなじみが深い。 そして、HRESULT(LRESULTも)は特にC++固有ということはなく 「Microsoftが定義したWindows開発用APIの一部」です。 COMやActiveX等はWindowsにおいてC++以外にも使いうるものであって、 C/C++用ヘッダでもその型定義があるに過ぎませんし、 UNIX等ではC++だったとしてもそんな型はまぁ使いません。

nVIDIA
質問者

お礼

私みてるとHRESULTは成功・失敗の合図に用いられているのを見ます。 ただ、成功・失敗の判定でHRESULTを利用するとうまくいかないことがあるそうです。 http://www.dinop.com/vc/hresult.html

その他の回答 (3)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

> HRESULT型はどの様な時に使用しますか? COMのインターフェイスの戻り値。 これはHRESULTで戻すのが基本的なルールです。 それ以外では私は使いません。 # そもそもWindows以外での開発もやるので環境依存部は最小限。

nVIDIA
質問者

お礼

わすれてました! くわしく教えてくださいましてありがとうございます!

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

LRESULTは「LONG型の戻り値」です。 ウィンドウプロシージャの戻り値等で使われますが、 意味的にはそれ以上の特定用途はありません。 つまり、各関数やAPIの仕様でその値の意味が決まります。 HRESULTは、COMのインターフェイスにおいて戻り値用に定義された型です。 フォーマットは[参考URL]に定義されています。 # DirectX等はCOMベースなので、基本的にHRESULTが帰ってきます。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncomg/html/msdn_design.asp
nVIDIA
質問者

補足

LRESULTは分かりました。 くどいようですが、 HRESULT型はどの様な時に使用しますか?

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.1

HRESULT とは単純なデータ型で、普通、属性および ATL の戻り値としてよく使われます。 winerror.h ファイル内に、この定数値が定義されています。 LRESULT は通常、ウィンドウプロシージャの戻り値としてよく使われます。 環境にもよりますが、大抵は、いずれも long 型の typedef だったりします。

参考URL:
http://msdn2.microsoft.com/ja-JP/library/dcy94zz2.aspx
nVIDIA
質問者

補足

くどいようですが、 HRESULT型はどの様な時に使用しますか?

関連するQ&A