![]() |
SDK-MFC 備忘録 |
Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)
2009/10/1 作成
2010/9/26 afxGlobalDataを参照する方法を追記
OSのバージョンは、APIで取得できます。
OSVERSIONINFO osvi;
// OSVERSIONINFO 構造体の初期化//
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx((OSVERSIONINFO*)&osvi);
OSVERSIONIFO構造体は、
typedef struct _OSVERSIONINFOA {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
CHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage
} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
typedef struct _OSVERSIONINFOW {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
WCHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage
} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW,
RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
とマルチバイト系とユニコード系で2種類あります。
通常はSwMajroVersionとswMinorVersionを参照すればいいと思います。
詳細はMSDN等を参照してください。
(2010.9.26追記)
MFCの場合は、afxGlobalDataのメンバを参照する手もあります。
たとえば、VISTA以降の判定の場合、
if(afxGlobalData.m_bIsWindowsVista){
//Vista以降
}
WINDOWS7以降の判定の場合
if(afxGlobalData.m_bIsWidows7){
//Windows7以降
}
このメンバ変数は、
AFXGLOBALDATAクラスのコンストラクタでGetVersion()関数でメジャーバージョンとマイナーバージョンを取得して判定しています。