アップリケーションのインスタンスハンドルの取得


ピースケ  2003-11-12 14:56:32  No: 52454  IP: [192.*.*.*]

はじめまして。アプリケーションのインスタンスハンドルを
取得しようとしています。下のようなプログラムを作りましたが
ビルドでエラーが出てしまいます。

#include <stdio.h>
#include <windows.h>

LONG GetWindowLongPtr(
    HWND hWnd,   
    int GWL_HINSTANCE    
   );

表示されるエラーは
構文エラー:'−'
です。どこかおかしいでしょうか?お願いします。

編集 削除
YuO  2003-11-12 15:19:37  No: 52455  IP: [192.*.*.*]

> 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というのは当然間違いで,エラーになります。

仮引数名を別の,マクロで使われていない名前に変えるか,
関数定義でない関数宣言なので変数名をそもそも定義しないことで,解決できます。

ちなみに,全部大文字の識別子は,マクロで使われることが多いので避けるべきです。

編集 削除
ピースケ  2003-11-12 16:20:49  No: 52456  IP: [192.*.*.*]

お返事ありがとうございます!!
GWL_INSTANCEを変数名として使用したのは、色々ページを
調べていたところそのように書いてあったので使用しました。
お返事の言ってることはわかったのですが、どのようにプログラム
を変えたらよいのかわかりません・・ほんと初心者ですみません・・・。
お願いします。

編集 削除
mimi  2003-11-12 17:05:53  No: 52457  IP: [192.*.*.*]

>どのようにプログラムを変えたらよいのかわかりません・・

どのようにもなにも、YuOさんの返信に書いてあるじゃん。

編集 削除
瀬戸っぷ  2003-11-12 17:25:47  No: 52458  IP: [192.*.*.*]

GetWindowLongPtr()ってWin32APIとして登録されていますが、
同名の関数を定義使用としていませんか???

とりあえず、どこのページを参照してプログラムを作ろうとしているのでしょうか?

編集 削除
ヘンゼルの記憶  URL  2003-11-12 18:21:52  No: 52459  IP: [192.*.*.*]

目的が「アプリケーションのインスタンスハンドルを取得」するのであれば…
そもそもこのような関数を「定義」することが間違っているように思われます。
インスタンスハンドルを取得することが出来る API を紹介した文章を誤って解釈してはいないでしょうか?
もう一度その本(ないしはサイト)の記述を確認してみるとよいと思います。

編集 削除
ヘンゼルの記憶  URL  2003-11-12 18:25:27  No: 52460  IP: [192.*.*.*]

申し訳ありません。
1つ前の私の発言で「定義」と言っているのは「宣言」の間違いでした。

編集 削除
AUT`s  2003-11-14 13:10:33  No: 52461  IP: [192.*.*.*]

多分、WinMainすら書いてないと思ワレ。まずはそこからじゃない?

編集 削除