• ベストアンサー

Void型ってどうやって比べるればいいのでしょうか?

ShellExecuteを使い返値を取得し判断したいのですが HINSTANCE がvoidとして帰ってきます Void型ってどうやって比べるればいいのでしょうか? void型自身よくわからないのですが 宜しくお願いいたします

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

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 ちょっとマニュアルを確認してみました。 > HINSTANCE がvoidとして帰ってきます。 これはちょっと違います。 ShellExecute API の復帰値は、HINSTANCE 型と なります。 HINSTANCE 型の定義を確認すると、 (ole.h 内で) const void * となっているようです。 ですので、ShellEexecute は、void * (ただのアドレス) が帰ってきます。 (アドレスですので4 byte です。) ShellExecute の実行結果をチェックするには、 {   HINSTANCE hShell;   hShell = ShellExecute(パラメータ・・・・);   if (((unsigned long)hShell) <= 32) {    エラー;    return;   }   正常処理; } とすれば、Ok です。

easy_gontyan
質問者

お礼

ありがとうございます これです アドレスで帰ってきてるんですね 早速試してみます ありがとうございました

その他の回答 (1)

  • nubou
  • ベストアンサー率22% (116/506)
回答No.1

シェルの戻り値は 関数が成功すると、32 より大きい値が返ります。関数が失敗すると、32 以下の値が返ります。次の表は、これらのエラー値を示しています。これらの戻り値は、16 ビット版の Windows アプリケーションとの下位互換性を考慮して、HINSTANCE へキャストされています。ただし、通常の HINSTANCE と同じものではありません。返された HINSTANCE に対して実行できるのは、整数へのキャスト、および数値 32 や次のエラーコードのいずれかと比較することだけです。 voidがかえるとはどういうことでしょうか?

参考URL:
http://www.microsoft.com/japan/developer/library/jpuipf/_win32_ShellExecute.htm
easy_gontyan
質問者

お礼

ありがとうございます 返値を比較しようと思いifで設定したのですが 実行されません わざと型が見たくint型などを入れた場合 エラーのvoid型で帰ってきました それでどの型で設定したらいいのかお聞きしたかったのです

関連するQ&A