|
|
||||||||||||||||||
|
2-1-9. OS環境を判断して対象外を除外するWindowsは、Windows 3.1 のWIN16環境、そして Windows 9x や NT のWIN32の環境があります。これらは、APIが少しずつ異なり、すべてに対応するのは困難です。現在の環境を判断し、対象外の場合の対象法を考えます。
OSの種類
OSの種類の判断 上記のOSの内、アプリケーションが実行している環境を調査することは、以下のマクロで簡単に判別できます。ただし下記マクロでは、Windows 95 と Windows 98 は区別しません。#if defined (WIN32)
#define IS_WIN32 TRUE
#else
#define IS_WIN32 FALSE
#endif
#define IS_NT (IS_WIN32&&(BOOL)(GetVersion() < 0x80000000))
#define IS_WIN32S (IS_WIN32&&(BOOL)(!(IS_NT) \
&& (LOBYTE(LOWORD(GetVersion()))<4)))
#define IS_WIN95 ((BOOL)(!(IS_NT) && !(IS_WIN32S)) && IS_WIN32)
判断し排除する アプリケーションで、OSを判断し対象の環境外なら、メッセージを表示して終了する例を以下の示します。INT APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,INT nCmdShow)
{
: (他のコード)
if (!(IS_WIN95 || IS_NT))
{
MessageBox(NULL,"このアプリケーションは、Windows 9x か"
" NT v3.51 以上でしか動作しません。"
,"ApBooks",MB_ICONSTOP|MB_OK);
return FALSE;
}
: (他のコード)
}
WinMainの最初で、マクロ判断し、対象外(上記ではWIN32S)なら、MessageBox 関数でメッセージを表示して、終了します。WIN32を詳細に区別する必要のある時は、GetVersion で判断してください。
|