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()関数でメジャーバージョンとマイナーバージョンを取得して判定しています。