VC下如何判断当前操作系统的版本
摘要:关于VC下如何判断当前操作系统的版本的深入研究。
步骤/方法
- 01
//判断操作系统涵数及变量,jingzhou xu typedef enum tagWin32SysType{ Windows32s, WindowsNT3, Windows95, Windows98, WindowsME, WindowsNT4, Windows2000, WindowsXP }Win32SysType; //判断操作系统涵数及变量,jingzhou xu Win32SysType IsShellSysType() { Win32SysType ShellType; DWORD winVer; OSVERSIONINFO *osvi; winVer=GetVersion(); if(winVer<0x80000000){/*NT */ ShellType=WindowsNT3; osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO)); if (osvi!=NULL){ memset(osvi,0,sizeof(OSVERSIONINFO)); osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(osvi); if(osvi->dwMajorVersion==4L)ShellType=WindowsNT4;
- 02
else if(osvi->dwMajorVersion==5L&&osvi->dwMinorVersion==0L)ShellType=Windows2000; else if(osvi->dwMajorVersion==5L&&osvi->dwMinorVersion==1L)ShellType=WindowsXP; free(osvi); } } else if (LOBYTE(LOWORD(winVer))<4) ShellType=Windows32s; else{ ShellType=Windows95; osvi= (OSVERSIONINFO *)malloc(sizeof(OSVERSIONINFO)); if (osvi!=NULL){ memset(osvi,0,sizeof(OSVERSIONINFO)); osvi->dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(osvi); if(osvi->dwMajorVersion==4L&&osvi->dwMinorVersion==10L)ShellType=Windows98; else if(osvi->dwMajorVersion==4L&&osvi->dwMinorVersion==90L)ShellType=WindowsME; free(osvi); } } return ShellType; }
- 03
用法 : //Win98、95、32下不用,jingzhou xu Win32SysType SysType = IsShellSysType(); if(SysType != Windows32s && SysType != Windows95 && SysType !=Windows98) { //显示动态GIF图像logo,jingzhou xu if (m_Picture.Load(MAKEINTRESOURCE(IDR_GIF),_T("GIF"))) { m_Picture.Draw(); } }