成功すれば0以外を返します。 バージョン情報構造体は次のように定義されています。BOOL GetVersionEx( LPOSVERSIONINFO lpVersionInformation // バージョン情報構造体へのポインタ );
dwOSVersionInfoSizeには、バージョン情報構造体のサイズを指定します。typedef struct _OSVERSIONINFO{ DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; TCHAR szCSDVersion[ 128 ]; } OSVERSIONINFO;
dwMajorVersionには、メジャーバージョン番号が返されます。 Windows NT 4.0なら4という具合です。
dwMinorVersionには、マイナーバージョンが返されます。 Windows NT 3.51なら51といった具合です。
dwBuildNumberには、NTならばビルド番号がはいります。
Windows 95 の場合はLOWORDにビルド番号、HIWORDにメジャーとマイナー
バージョン番号が入ります。
dwPlatformIdには、プラットフォームの種類がはいります。
Win32sならばVER_PLATFORM_WIN32s
Windows 95ならばVER_PLATFORM_WIN32_WINDOWS
Windows NTならばVER_PLATFORM_WIN32_NTがはいります。
ちなみにwinbase.hで
のように定義されています。 では、サンプルを見てみましょう。#define VER_PLATFORM_WIN32s 0 #define VER_PLATFORM_WIN32_WINDOWS 1 #define VER_PLATFORM_WIN32_NT 2
サンプルは、たったこれだけです。OSのプラットフォームを 調べて、Windows95ならビルド番号を示すというものです。// version.cpp #include <windows.h> int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, int nCmdShow) { OSVERSIONINFO osv; osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); char str[256]; char *str_format = "Build No.= %d"; GetVersionEx(&osv); switch (osv.dwPlatformId) { case VER_PLATFORM_WIN32s: MessageBox(NULL, "Win32sです", "Platform", MB_OK); break; case VER_PLATFORM_WIN32_WINDOWS: MessageBox(NULL, "Windows95です", "Platform", MB_OK); wsprintf(str, str_format, LOWORD(osv.dwBuildNumber)); MessageBox(NULL, str, "OK", MB_OK); break; case VER_PLATFORM_WIN32_NT: MessageBox(NULL, "WindowsNTです", "Platform", MB_OK); break; } return 0; }
では、このようなバージョン情報は実際にはどのように 使われるのでしょうか。例を示します。
このHPではウィンドウクラスを登録するのは、 WNDCLASS構造体を定義して、RegisterClass関数で 登録していました。しかし動作しているOSがWindows95であるとわかった場合、 WNDCLASSEX構造体と、RegisterClassEx関数を使うことができます。
WNDCLASSとどこが違うかというと、cbSize, hIconSmが追加されています。 hIconSmには、16*16の小さいアイコンを登録します。 もともとWindwos95専用だったのですが、Windwos NTでも3.5から採用されたみたいです。 このWNDCLASSEXを登録するのがRegisterClassExです。typedef struct _WNDCLASSEX { // wc UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; } WNDCLASSEX;
[SDK Index] [総合Index] [Previous Chapter] [Next Chapter]
Update Oct/11/1997 By Y.Kumei