大家知道MOBIL5.0開始,EVC4開發的工程就無法進行DEBUG了,而必須使用VS.NET2005中的VC++來實現。但是以前我們費了很大心力做成的項目,也不能重新來寫。
今天通過一上午的研究,將轉化方法貼出來和大家共勉。
這里我們以DIALOG
BASED工程為例。首先用EVC4建立一個DIALOG BASED的POCKET PC
2003工程。此工程名我們暫定為TXDEMO。我們也可以在對話框放置一個BUTTON,在單擊事件里,添加
AfxMessageBox(L”Test”); 以便升級到VS.NET 2005后,測試資源對應情況。
此時,保存TXDEMO工程,并關閉掉EVC4開發工具。此時用VS.NET 2005打開TXDEMO.VCW工程,并接受轉換請求。此時并將編譯環境切換到Windows Mobile 5.0 pocket pc sdk。編譯工程,此時會提示如下錯誤:
1>C:\Program
Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\afxver_.h(77) :
fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
這里我們通過打開Project properties對話框里,切換到C/C++->Code generation頁,將Runtime Libarary 設置成“Multi-threaded DLL(/MD)”。即可解決此問題。
接著編譯工程,此時會提示如下錯誤:
1>.\TXDEMO.rc(170) : fatal error RC1015: cannot open include file 'wceres.rc'.
這里我們需要在TXDEMO.RC文件里,將#include "wceres.rc"注釋掉。
//#include "wceres.rc" // WCE-specific components
接著編譯工程,此時會提示如下錯誤:
1>corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup
1>Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Debug/TXDEMO.exe : fatal error LNK1120: 1 unresolved externals
此時,我們依舊打開project properties對話框,切換到Linker->Advanced頁,將Entry Point由wWinMainCRTStartup改成WinMainCRTStartup。
此時再次編譯,系統不在提示錯誤,但是編譯好的程序,還不能在模擬器或者MOBILE5.0 POCKET PC的機器上運行。
我們接著設置項目屬性,在Configuration Properties->Gengeral頁將Use of MFC ,改成靜態連接。
此時我們運行程序 ,您會發現程序啟動后,就立刻退去。經過我的研究,發現是加載對話框資源失敗,在此我們再此打開TXDEMO.RC源文件,
找到IDD_TXDEMO_DIALOG DIALOG DISCARDABLE 0, 0, 130, 90語句,將下面的窗體屬性改成如下,即可。
WS_POPUP | WS_VISIBLE | WS_CAPTION
此時,再次編譯工程,你可以進行DEBUG并可以運行程序。
這是我對EVC4升級到VS.NET 2005一點總結,其中參考了MSDN中一些文檔,但是MSDN說的還不夠詳細,通過我自己的研究,總結出一點經驗,希望能給大家帶來方便,謝謝。
eric.wong
msn:wbcpcpwb@hotmail.com
我遇到的問題與上述問題幾乎相似,但是對話框出了問題
I have an app I ported from eVC 3.0 to VS2005, and when I run it, I get
the following error in the debug window:
ERROR: dialog template has DS_MODALFRAME set, which is not supported
for Pocket PC and Smartphone
And then I get a data abort and an unhandled exception error, and
everything just goes straight to hell.
According to Microsoft this is a feature removed in MFC 8.0. If that's
true, how do I get a floating modal dialog style application using MFC
8 without this style? Every style I try seems to want to come up
full-screen now.
Thanks,
PaulH
我試著用別的對話框來實現,
http://www.shnenglu.com/michaelgao/archive/2008/10/03/63200.html