• ベストアンサー

HINSTANCEの型

LPSTR は char* なので、 int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , LPSTR lpCmdLine ,int nCmdShow ) を int WINAPI WinMain(HINSTANCE hInstance ,HINSTANCE hPrevInstance , char* lpCmdLine ,int nCmdShow ) と書き換えてもコンパイルできます。 HINSTANCEはvoid *型だという記述を見たのですが、void *で書き換えてもエラーがでてしまいます。 どうしたらよいのでしょうか。

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

どうしたらよいかという質問なら書き換えなければ良いだけですが HINSTANCEはvoid*型ではないようです windef.hを見ると DECLARE_HANDLE(HINSTANCE); と書かれています マクロを展開すると #define struct HINSTANCE__ { int unused; }; typedef struct HINSTANCE__ *HINSTANCE になります。 int型変数を持つ構造体のポインタですね。

string
質問者

お礼

ご回答ありがとうございます。 大変よくわかりました。 書き換えが目的というより、具体的に何ビットの情報なのか興味があったわけです。

その他の回答 (1)

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

>HINSTANCEはvoid *型だという記述を見たのですが HINSTANCEではなくHANDLE型の間違いでしょう。 インスタンスハンドルはNo1さんのとおり構造体の 同義名ですので、書き換えることはでき無いでしょう。 やるとしても、結局自分で同義名を定義するだけ。 #typedef struct HINSTANCE__* MYINSTANCE; それらの型をわざわざ書き換える必要があるのか もう一度しっかり検討した方がいいと思います。

string
質問者

お礼

ご回答ありがとうございます。 大変よくわかりました。 書き換えが目的というより、具体的に何ビットの情報なのか興味があったわけです。

関連するQ&A