新聞中心
在開(kāi)發(fā)Windows CE的應(yīng)用程序時(shí),經(jīng)常需要檢測(cè)平臺(tái)類型,了解我們的應(yīng)用程序運(yùn)行在Pocket PC、Smartphone還是Windows CE上。在這篇文章里,我們介紹如何編寫(xiě)一個(gè)應(yīng)用程序來(lái)檢測(cè)當(dāng)前運(yùn)行的平臺(tái)類型。

在開(kāi)發(fā)Windows CE的操作系統(tǒng)時(shí),我們會(huì)遇到另外一種情況:某些應(yīng)用程序限制了運(yùn)行的操作系統(tǒng)平臺(tái),比如只允許運(yùn)行在Pocket PC上。而我們?nèi)绻朐赪indows CE上運(yùn)行的話,就需要修改操作系統(tǒng)的平臺(tái)類型。注意:這種情況只能出現(xiàn)在測(cè)試時(shí),不應(yīng)該修改實(shí)際產(chǎn)品的平臺(tái)類型,否則會(huì)引起很多安全性的問(wèn)題。
創(chuàng)建平臺(tái)檢測(cè)程序
首先,我們需要?jiǎng)?chuàng)建一個(gè)應(yīng)用程序來(lái)檢測(cè)當(dāng)前的平臺(tái)類型,我們使用C++和Platform Builder來(lái)創(chuàng)建這個(gè)程序。如果你熟悉.NET Compact Framework的開(kāi)發(fā),想開(kāi)發(fā)托管的平臺(tái)檢測(cè)程序,請(qǐng)參考:
如何檢測(cè)你的應(yīng)用程序是否運(yùn)行在模擬器上
http://blogs.msdn.com/netcfteam/archive/2006/09/15/756755.aspx
檢測(cè)你的程序運(yùn)行在Pocket PC或Smartphone上
http://blogs.msdn.com/netcfteam/archive/2006/09/22/766343.aspx
檢測(cè)平臺(tái)是否支持觸摸屏
http://blogs.msdn.com/netcfteam/archive/2006/10/02/Platform-detection-III_3A00_-How-to-detect-a-touch-screen-on-Windows-CE-in-.NET-CF.aspx
創(chuàng)建OS Design和編譯的過(guò)程在此略過(guò),可以參考《Windows CE 6.0 R2開(kāi)發(fā)初體驗(yàn)》. 我們首先在Platform Builder里創(chuàng)建一個(gè)子工程(Subporject),在Solution Explorer里找到Subporject節(jié)點(diǎn),右鍵選擇Add New Porject,會(huì)啟動(dòng)向?qū)А?/p>
在向?qū)е?,選擇WCE Application,將工程名稱改為”CheckPlatform”.
為了少寫(xiě)代碼,我們選擇”Hello World” application,一般情況下,我們應(yīng)該選擇simple Windows Embedded CE application.
我們打開(kāi)Subprojects節(jié)點(diǎn)中的CheckPlatform(工程名稱)中的Source files節(jié)點(diǎn)中找到CheckPlatform.cpp文件。在文件中找到WndProc函數(shù),將代碼修改為:
- TCHAR szPlatform[1024];
- switch (message)
- {
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- // TODO: Add any drawing code here...
- RECT rt;
- GetClientRect(hWnd, &rt);
- if (SystemParametersInfo(SPI_GETPLATFORMTYPE,sizeof(szPlatform),szPlatform,0)!=0)
- {
- DrawText(hdc, szPlatform, _tcslen(szPlatform), &rt, DT_CENTER);
- }
- EndPaint(hWnd, &ps);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
代碼寫(xiě)的并不好,主要是為了驗(yàn)證SystemParametersInfo函數(shù),我們就將Platform Type顯示到窗體上了。正常情況下,我們應(yīng)該用下面的代碼判斷運(yùn)行平臺(tái):
- if (SystemParametersInfo(SPI_GETPLATFORMTYPE,sizeof(szPlatform),szPlatform,0)!=0)
- {
- if (lstrcmp(szPlatform,TEXT("PocketPC"))==0)
- ; // Pocket PC
- else if (lstrcmp(szPlatform,TEXT("Smartphone"))==0)
- ; // smartphone
- }
文章標(biāo)題:如何修改WindowsCE的平臺(tái)類型(上)
分享路徑:http://www.5511xx.com/article/djseidg.html


咨詢
建站咨詢
