• ベストアンサー

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 *で書き換えてもエラーがでてしまいます。 どうしたらよいのでしょうか。

  • string
  • お礼率92% (168/181)

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

  • ベストアンサー
  • 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

  • 外部シンボル "_main"は未解決です

    「LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です」というエラーが発生しましたが、何をみればいいのかわかりません。int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )がソースについています。

  • 画像が出力されません

    画像出力するには int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); から引数"lpCmdLine"を使うことにより画像が出力できる事を聞いたのですが本当でしょうか? うまく出力できません どのようにしたらよいのか具体的にソースをつけて教えてください。 画像はraw画像で出力します

  • main関数の事についてお聞きします。

    Windowsのプログラムを書くとき、下のようにキッチリ戻り値や引数を書かなくてはならないのに int WINAPI WinMain( HINSTANCE hInstance, // 現在のインスタンスのハンドル HINSTANCE hPrevInstance, // 以前のインスタンスのハンドル LPSTR lpCmdLine, // コマンドライン int nCmdShow // 表示状態 ); C言語で書かれたプログラムは int main(int argc, char *argv[]) ではなく、 int main(void) や void main(void) または int main() や main() だけのモノなど、 いろいろです。 main関数は、関数なのに戻り値や引数を省略して書ける仕様なのは、なぜなのか? ちょっと疑問に思ったのでこちらにお尋ねしました。

  • lpCmdLineについて

    #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { MessageBox(NULL , lpCmdLine , TEXT("Kitty") , MB_ICONINFORMATION); return 0; } とやったのですが、lpCmdLineのパスが表示されません。なぜでしょうか?

  • Windowsゲームプログラミングを始めたのですが

    最近ゲームのプログラムを始めた者です。 C言語でWindowsプログラムを書き始めたのですが、最初の宣言を行った時点でコンパイル時に大量のエラーが出てしまいました。 ↓が内容です。 #include<windows.h> #include<stdio.h> #include<stdlib.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ } 使用OSはVistaです。 急いではいないので、どなたか解決法を知っている方、ご指導お願いします。

  • AppleScriptでプログラミング

    私は最近C言語のプログラミングに興味を持ち、Mac os 10.3.9に入っていた「AppleScript」の中の「スクリプトエディタ」で、インターネットで見つけた文字列、例えば下の #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ if( DxLib_Init() == -1 ) return -1; WaitKey() ; DxLib_End() ; return 0 ; } などを打ち込んでみたのですが、さっぱりコンパイルできません。 なにしろ初心者なもので、何がなんだかさっぱり分からず困っています

  • コンパイルできません

    #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ MessageBox(NULL, "Kitty on your lap","メッセージです", MB_OK); return 0; } の様なプログラムを組んだところ Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) の様にエラーになってしまいました。 どんな理由でエラーになっているのか調べたのですがよくわかりません。 一番初めのwin32APIを使ったプログラムで上手くコンパイルできないと 勉強が進まないので、わかる方教えてください。

  • VS2019でWinMainエラー発生

    以下メッセージを表示するだけのプログラムですが、以前はビルドできたのですが、VS2019になってからWinMainで「整合性のないインスタンス・・・」とエラーが出ます。なんででしょうか。 お願いします。 またVCをVBSみたいに黒い画面が出ずに引数を使用したいですが、その他アドバイスもお願いします。 #include <windows.h> int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox( NULL, TEXT("Hello, world!"), TEXT("Hello"), MB_OK | MB_ICONINFORMATION ); return 0; }

  • Windowsアプリケーションをどうしても作りたいのですが

    /* OS==XP コンパイラー==Borland C++5.5 */ #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } で Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) となるのでexeファイルができません。 解決法を是非教えてください。 C言語歴2日+1H

  • DEVICECHANGE() の受け取り

    常駐し、USBメモリなど追加された場合を検出したいです。 どうしたらいいでしょうか? 次のソースでwin32空きプロジェクトを作成します。 #include<windows.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; } ON_WM_DEVICECHANGE() というメッセージを受け取るそうですがどうしたらいいでしょうか? 例えば、USBドライブを検出した場合、メッセージを表示するようにしたいです。

専門家に質問してみよう