简化 Windows Mobile 代码维护的编程技巧
2010-03-14 22:12:00 来源:WEB开发网为了使应用程序的维护和支持工作尽可能少,开发人员希望使计划支持的平台都用统一的源代码,甚至希望可以使一个二进制文件在两个平台上都能运行,以下技巧将有助于您实现这个目标。
一、检查平台的版本
在编译时确定平台的版本,那样可以使用同一套源代码来在编译时适应不同平台二进制文件。
在程序运行时检查平台的版本,这样就可以根据判断来进行不同的操作,使用同一个二进制文件能运行在不同的平台上。
#define POCKETPCV1 1
#define SMARTPHONEV1 2
#define POCKETPCV2 3
#define SMARTPHONEV2 4
int MyDeviceType()
{
TCHAR szPlatform[MAX_STRING_BUFFER];
int iDeviceType=0;
OSVERSIONINFO osVer;
GetVersionEx(&osVer);
if (osVer.dwMajorVersion==3)
{
if (SystemParametersInfo(SPI_GETPLATFORMTYPE,
sizeof(szPlatform),szPlatform,0)!=0)
{
if (lstrcmp(szPlatform,TEXT("PocketPC"))==0)
iDeviceType= POCKETPCV1; // runs on Pocket PC 2000 and 2002
else if (lstrcmp(szPlatform,TEXT("Smartphone"))==0)
iDeviceType= SMARTPHONEV1; // runs on Smartphone 2002
}
else
{
if (GetLastError()==ERROR_ACCESS_DENIED) //(5)
iDeviceType= SMARTPHONEV1; // is a smartphone:
// Smartphone creates an access denied error on
// SystemParametersInfo()
}
}
else
{
if (osVer.dwMajorVersion==4)
{
if (SystemParametersInfo(SPI_GETPLATFORMTYPE,
sizeof(szPlatform),szPlatform,0)!=0)
{
if (lstrcmp(szPlatform,TEXT("PocketPC"))==0)
iDeviceType= POCKETPCV2; // runs on Pocket PC 2003
else if (lstrcmp(szPlatform,TEXT("Smartphone"))==0)
iDeviceType= SMARTPHONEV2; // runs on Smartphone 2003
}
else
{
if (GetLastError()==ERROR_ACCESS_DENIED) //(5)
赞助商链接