フリーソフト

« [BCB] アプリの2重起動を禁止する | トップページ | [BCB] caseでローカル変数の初期化がとばされた? »

[BCB] EnumWindowsでコンパイルが通らない

ウインドウの一覧を得るEnumWindowsというAPIがありますが、C++Builder6.0でこの関数を使用すると以下のようなエラーがでる場合があるようです。

----
E2034 'int (__stdcall *)(void *,long)'型は'int (__stdcall *)()'型に変換できない
E2342 パラメータ 'EnumWndProc' は int (__stdcall *)() 型として定義されているので int (__stdcall *)(void *,long) は渡せない
----

以下のように強制的にキャストをかけてしまえばコンパイルできるようになります。きちんと意図した動作もしているようです。

//関数の定義
BOOL CALLBACK EnumWndProc(HWND hWindow,LPARAM lData)
{
   :
}

//呼び出し
EnumWindows((WNDENUMPROC)EnumWndProc,0);

« [BCB] アプリの2重起動を禁止する | トップページ | [BCB] caseでローカル変数の初期化がとばされた? »

C++Builder」カテゴリの記事

C++言語・Pascal言語」カテゴリの記事

コメント

この記事へのコメントは終了しました。