首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Windows Mobile >> Windows Mobile 入门 >> 正文
在运行时检查平台版本
作者:mingjava    文章来源:j2medev    更新时间:2008-3-6 13:53:51

你可以使用Windows CE的GetVersionEx方法和Windows CE的OSVERSIONINFO结构体来实现平台的版本检查。dwPlatformId结构体成员可以用来标记平台和操作系统版本,这样你就可以在程序中根据平台版本走不同的分支,实现一套代码适配不同的平台。

// Define the (arbitrary) device type identifiers.
#define DESKTOPID  500
#define SMARTPHONE2003ID  403
#define SMARTPHONE2002ID  402
#define POCKETPC2003ID  303
#define POCKETPC2002ID  302
#define POCKETPC2000ID  300
#define OTHERWINCEID  100
#define UNKNOWNID  0

BOOL rb;
int rc;
int iDevice = 0;  // Describe the device type.
OSVERSIONINFO osvi;
TCHAR szPlatform[MAX_PATH];

osvi.dwOSVersionInfoSize = sizeof(osvi);
rb = GetVersionEx(&osvi);
if (rb == FALSE)  // GetVersionEx failed.
{
    rc = MessageBox(NULL, _T("Could not create main window."),
                    _T("Error"), MB_OK);
    if (rc == 0)  // Not enough memory to create MessageBox.
        return E_OUTOFMEMORY;
    return E_FAIL;  // Replace with specific error handling.
}

switch (osvi.dwPlatformId)
{
    // A Windows CE platform. 
    case VER_PLATFORM_WIN32_CE:
        // Get platform string.
        rb = SystemParametersInfo(SPI_GETPLATFORMTYPE, 
                                  MAX_PATH, szPlatform, 0);
        if (rb == FALSE)  // SystemParametersInfo failed.
        {
            rc = MessageBox(NULL, _T("Could not create main window."),
                            _T("Error"), MB_OK);
            if (rc == 0)  // Not enough memory to create MessageBox.
                return E_OUTOFMEMORY;
            return E_FAIL;  // Replace with specific error handling.
        }
        else  // SystemParametersInfo succeeded.
        {
            if (0 == lstrcmp(szPlatform, TEXT("Smartphone")))  
            {  // Smartphone devices.
                if (osvi.dwMajorVersion == 3)
                    iDevice = SMARTPHONE2002ID;
                else if (osvi.dwMajorVersion == 4)
                    iDevice = SMARTPHONE2003ID;
                else  // Unknown device.
                    iDevice = UNKNOWNID;
            } 
            else if (0 == lstrcmp(szPlatform, TEXT("PocketPC"))) 
            {  // Pocket PC devices.
                if (osvi.dwMajorVersion == 3)
                    if (osvi.dwMinorVersion == 0)
                        iDevice = POCKETPC2000ID;
                    else if (osvi.dwMinorVersion == 1)
                        iDevice = POCKETPC2002ID;
                    else  // Unknown device.
                        iDevice = UNKNOWNID;
                else if (osvi.dwMajorVersion == 4)
                    iDevice = POCKETPC2003ID;
                else  // Unknown device.
                    iDevice = UNKNOWNID;
            }
            else
            {  // Some other Windows CE–based device.
                iDevice = OTHERWINCEID;
            } 
        }  // SystemParametersInfo succeeded.
        break;
    // A desktop Windows platform.
    default:
        iDevice = DESKTOPID;
    break;
}
相关文章:
没有相关文章
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号