- ベストアンサー
LRESULTとHRESULT
身近でよく見かけるものに限ってなかなか探しても見つからないものなのですよね。 よくC++のプログラムで見かける LRESULT型 HRESULT型 いったいどの様な型なのでしょうか? どの様な時に使うのか教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もう少しだけ補足。 ATLは、COM実装等に使うことを意識したライブラリなのでHRESULTとはなじみが深い。 そして、HRESULT(LRESULTも)は特にC++固有ということはなく 「Microsoftが定義したWindows開発用APIの一部」です。 COMやActiveX等はWindowsにおいてC++以外にも使いうるものであって、 C/C++用ヘッダでもその型定義があるに過ぎませんし、 UNIX等ではC++だったとしてもそんな型はまぁ使いません。
その他の回答 (3)
- MrBan
- ベストアンサー率53% (331/615)
> HRESULT型はどの様な時に使用しますか? COMのインターフェイスの戻り値。 これはHRESULTで戻すのが基本的なルールです。 それ以外では私は使いません。 # そもそもWindows以外での開発もやるので環境依存部は最小限。
お礼
わすれてました! くわしく教えてくださいましてありがとうございます!
- MrBan
- ベストアンサー率53% (331/615)
LRESULTは「LONG型の戻り値」です。 ウィンドウプロシージャの戻り値等で使われますが、 意味的にはそれ以上の特定用途はありません。 つまり、各関数やAPIの仕様でその値の意味が決まります。 HRESULTは、COMのインターフェイスにおいて戻り値用に定義された型です。 フォーマットは[参考URL]に定義されています。 # DirectX等はCOMベースなので、基本的にHRESULTが帰ってきます。
補足
LRESULTは分かりました。 くどいようですが、 HRESULT型はどの様な時に使用しますか?
- RAPTsong
- ベストアンサー率42% (74/175)
HRESULT とは単純なデータ型で、普通、属性および ATL の戻り値としてよく使われます。 winerror.h ファイル内に、この定数値が定義されています。 LRESULT は通常、ウィンドウプロシージャの戻り値としてよく使われます。 環境にもよりますが、大抵は、いずれも long 型の typedef だったりします。
補足
くどいようですが、 HRESULT型はどの様な時に使用しますか?
お礼
私みてるとHRESULTは成功・失敗の合図に用いられているのを見ます。 ただ、成功・失敗の判定でHRESULTを利用するとうまくいかないことがあるそうです。 http://www.dinop.com/vc/hresult.html