はじめまして。アプリケーションのインスタンスハンドルを
取得しようとしています。下のようなプログラムを作りましたが
ビルドでエラーが出てしまいます。
#include <stdio.h>
#include <windows.h>
LONG GetWindowLongPtr(
HWND hWnd,
int GWL_HINSTANCE
);
表示されるエラーは
構文エラー:'−'
です。どこかおかしいでしょうか?お願いします。
> LONG GetWindowLongPtr(
> HWND hWnd,
> int GWL_HINSTANCE
> );
(snip)
> です。どこかおかしいでしょうか?お願いします。
GWL_INSTANCEを変数名として使っていることです。
2003年2月版のPlatform SDKでは,
>#define GWL_HINSTANCE (-6)
と定義されています。
故に,最初の関数宣言は,
LONG GetWindowLongPtr(
HWND hWnd,
int (-6)
);
と見なされてしまいます。
-6というのは当然間違いで,エラーになります。
仮引数名を別の,マクロで使われていない名前に変えるか,
関数定義でない関数宣言なので変数名をそもそも定義しないことで,解決できます。
ちなみに,全部大文字の識別子は,マクロで使われることが多いので避けるべきです。
お返事ありがとうございます!!
GWL_INSTANCEを変数名として使用したのは、色々ページを
調べていたところそのように書いてあったので使用しました。
お返事の言ってることはわかったのですが、どのようにプログラム
を変えたらよいのかわかりません・・ほんと初心者ですみません・・・。
お願いします。
>どのようにプログラムを変えたらよいのかわかりません・・
どのようにもなにも、YuOさんの返信に書いてあるじゃん。
GetWindowLongPtr()ってWin32APIとして登録されていますが、
同名の関数を定義使用としていませんか???
とりあえず、どこのページを参照してプログラムを作ろうとしているのでしょうか?
目的が「アプリケーションのインスタンスハンドルを取得」するのであれば…
そもそもこのような関数を「定義」することが間違っているように思われます。
インスタンスハンドルを取得することが出来る API を紹介した文章を誤って解釈してはいないでしょうか?
もう一度その本(ないしはサイト)の記述を確認してみるとよいと思います。
申し訳ありません。
1つ前の私の発言で「定義」と言っているのは「宣言」の間違いでした。
多分、WinMainすら書いてないと思ワレ。まずはそこからじゃない?
編集 削除