[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:4657] HMONITOR_DECLARED
- X-ml-count: 4660
- Subject: Re: [MD:4657] HMONITOR_DECLARED
- From: "M.Fujii" <boochang@xxxxxxxxxxxx>
- Date: Wed, 15 Oct 2003 20:22:00 +0900 (JST)
- X-mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
藤井です。
From: MIYOSHI Masanori <miyoshi@xxxxxxxxxxxxxxxx>
Subject: Re: [MD:4657] HMONITOR_DECLARED
Date: Wed, 15 Oct 2003 19:16:36 +0900
Message-ID: <uismqajqz.wl%miyoshi@xxxxxxxxxxxxxxxx>
> >>>>> [meadow-develop : No.4657] にて
> >>>>> ": 後" = Shun-ichi GOTO <gotoh@xxxxxxxxxxx> さんは書きました:
> 後> mw32fns.c で、マルチモニタのAPIを使うためのHMONITOR のハンドル定義を
> 後> している部分でコケます。
>
> 後> 原因は、vc6, vc7 ともに今時の環境で普通にコンパイルすると
> 後> DECLARE_HANDLE(HMONITOR) はwindef.h で行なわれ、かつ、HMONITOR_DECLARED
> 後> は undefined な状態となるためです。
> 後> ## xxx_DECLARED は統一的に使われているようではなさそうです。
>
>
> 後> 古いシステム(Win95, NT4, etc.)で、古いコンパイラ(ちうかSDK)でビルドする
> 後> のでない限りmw32fns.c でのHMONITOR の定義は不要であり、適切なインクルード
> 後> ファイルを読み込んでいれば良いと思うので、削除しときました。
>
> むむむ。私の環境(VC6 + 最新のSP)ではこの定義がないとコンパイルエ
> ラーになっちゃいます。T_T
>
> 何か環境変数の定義が必要なのかしら?
>
> #if(WINVER >= 0x0500)
>
> が真になるようにすれば、winuser.h でこれらの定義が有効になるよう
> なのですけどね。
>
> WINVER の意味って何でしたっけ?
バージョンアップで追加された OS の機能に関連した定義、宣言を有効にする
ためのフラグです。特定バージョン以降で追加された機能を使うアプリをビル
ドする時に設定します。
16bit 値かどうかは分かりませんが、上位 8bit が Windows のメジャーバー
ジョン、下位 8bit がマイナーバージョンに対応しているようです。
このマクロにバージョン番号を設定しておくと、そのバージョン以降に搭載さ
れている機能に関連した定義、宣言が有効になる訳です。(一覧は MSDN に載っ
ています)
WINVER == 0x0500 を設定した場合は、Win98, Win2K 以降で動作するプログラ
ムをビルドするということになります。
同様のマクロに、_WIN32_WINDOWS, _WIN32_WINNT, _WIN32_IE というものがあ
ります。
で、これらのマクロを指定しなければ全ての Windows で動作する(であろう)
プログラムがビルドできます。
VC 7.1 (確認できないですが VC 7.0 も恐らくそう) では、デフォルトで
WINVER = 0x0500 が設定されるので、何もしなくても Win98 以降に追加され
たマルチモニタ API に関連した定義がヘッダで行なわれるようになります。
--
藤井 正行 / Masayuki FUJII ( boochang@xxxxxxxxxxxx )