淺談eMbedded Visual C++4.0對於Windows CE.net 的開發 (轉)

amyz發表於2007-10-17
淺談eMbedded Visual C++4.0對於Windows CE.net 的開發 (轉)[@more@] 

淺談eMbedded Visual C++4.0對於 CE 的開發:namespace prefix = o ns = "urn:schemas--com::office" />

 

摘要:說明利用eMbedded Visual C++4.0實現嵌入式Windows CE.net 的開發技術,介紹具體實現的思想和方案。

關鍵詞:嵌入式 Windows CE.net eMbedded Visual C++4.0

 

本文主要講述如何使用eMbwedded Visual C++4.0 來進行 Windows CE.net的開發?如果你已經能熟練應用 Microsoft Visual C++ 這個 Windows 平臺上最優秀的開發工具,那麼這個針對於嵌入式Windows CE.net的開發環境eMbwedded Visual C++4.0對你來說也就相對簡單了。

 

關於eMbedded Visual C++4.0嚮導

 

eMbedded Visual C++4.0能使你開發和Visual C++相似的應用的在Windows CE.net上執行的應用程式,另外,還包括你所開發對於Windows CE平臺和裝置的應用程式時所用的幫助工具。你要弄明白目標環境、Windows CE.net和新的嚮導的特殊性。這裡我們將重點介紹一下“Windows CE.net 應用程式嚮導(Wizards)”。

eMbedded Visual C++4.0 中所帶的應用程式嚮導是一個非常有用的工具。一共有七種型別的新的嚮導,它們的使用方法和 Visual C++ 中常規的嚮導沒什麼區別,只是它們是用於 Windows CE.net 開發的。你可以利用它們來地建立一個基本的應用程式、動態連線庫(DLL)或者應用程式外殼。這七種新的嚮導分別是:WCE 應用程式; WCE MFC嚮導(.dll);WCE 動態連線庫 ;WCE 靜態連線庫嚮導;WCE ATL 應用嚮導; WCE MFC 嚮導和WCE MFC嚮導(.exe)。相比於臺式系統, (包括MFC)都有很大的限制,例如,Windows CE系統中很多行為都不是很明顯,即使她也允許你象在臺式PC機那樣操作。 當然隨著 Windows CE.net 的普及,必然會有更多的 eMbedded Visual C++4.0 嚮匯出現的。

使用eMbedded Visual C++4.0編寫第一個 CE 應用程式

 

以下我們將透過一個簡單的例子來說明如何使用 eMbedded Visual C++4.0 的 WCE MFC 應用嚮導來(EXE) 來開發一個 CE 應用程式。eMbedded Visual C++4.0提供了以下型別的多種選擇:ARM, MIPS, Shx及 x86。雖然作為Windows CE.net的,但她也支援很多不同的裝置。在編輯框中輸入兩個數,單擊”計算結果”按鈕,則在第三個編輯框中顯示兩數結果,可以是四種演算法中一種.編寫一個小程式名為y3.

1.  定製對話方塊模板

設定對話方塊本身的屬性;向對話方塊放置控制元件及設定控制元件跳錶順序.

(1)  設定對話方塊的屬性

(2)  新增控制元件並設定控制元件屬性.本次介紹七種圖形控制元件,靜態文字控制元件,編輯框,組框,按鈕,核取方塊以及單選框

(3)  設定控制元件跳錶順序,即對每個控制元件賦予順序編號.

2.  定義成員變數

變數的類別可以為Value或Control.後者表示所定義的變數是控制元件類的一個物件.前者表示所定義的變數是與控制元件相聯絡的一個值.

3.  增加事件處理

4.  增加程式碼

需要實現的函式包括:OnButtonResult(),OnChangeEditAdd1(),OnChangeEditAdd2(),OnRa

dioAdd(),OnRadioDiv(),OnRadioMulti(),OnRadioSub().

void CY3Dlg::OnChangeEditAdd1()

{

  // TODO: If this is a RICHEDIT control, the control will not

  // send this notification unless you overr the CDialog::OnInitDialog()

  // function and call CRichEditCtrl().SetEventMask()

  // with the ENM_CHANGE flag ORed into the mask.

 

  // TODO: Add your control notification handler code here

  if(m_bAtOnce)

  {

  OnButtonResult();}

}

void CY3Dlg::OnChangeEditAdd2()

{

  // TODO: If this is a RICHEDIT control, the control will not

  // send this notification unless you override the CDialog::OnInitDialog()

  // function and call CRichEditCtrl().SetEventMask()

  // with the ENM_CHANGE flag ORed into the mask.

  // TODO: Add your control notification handler code here

  UpdateData();

  if(m_bAtOnce)

  {

  OnButtonResult();

  }

}

void CY3Dlg::OnRadioAdd()

{

  // TODO: Add your control notification handler code here

  UpdateData(true);

  m_strOpr="+";

  UpdateData(false);

}

void CY3Dlg::OnRadioDiv()

{

  // TODO: Add your control notification handler code here

  UpdateData(true);

  m_strOpr="/";

  UpdateData(false);

 

}

void CY3Dlg::OnRadioMulti()

{

  // TODO: Add your control notification handler code here

  UpdateData(true);

  m_strOpr="*";

  UpdateData(false);

}

void CY3Dlg::OnRadioSub()

{

  // TODO: Add your control notification handler code here

  UpdateData(true);

  m_strOpr="-";

  UpdateData(false);

}

void CY3Dlg::OnButtonResult()

{

  // TODO: Add your control notification handler code here

  UpdateData(true);

  switch(m_dOpr) 

{

  case 0:  /*加法*/

  m_fResult=m_fAdd1+m_fAdd2; 

  break;

  case 1:  /*減法*/

  m_fResult=m_fAdd1-m_fAdd2;

  break;

  case 2:  /*乘法*/

  m_fResult=m_fAdd1*m_fAdd2;

  break;

  case 3:  /*除法*/

  m_fResult=m_fAdd1/m_fAdd2;

  break;

}

  UpdateData(false);

}

上面程式碼中頻繁出現了函式Updatedata(),其格式如下:

BOOL UpdataData(BOOL bSaveAndValidate=TRUE); Updatedata()是MFC類CWnd的成員函式,CWnd類是很重要的一個MFC類,所有視窗類都直接或間接繼承它。各關聯函式的初值在函式CY3Dlg::CY3Dlg中初始化。

 

CY3Dlg::CY3Dlg(CWnd* pParent /*=NULL*/)

  : CDialog(CY3Dlg::IDD, pParent)

{

  //{{AFX_DATA_INIT(CY3Dlg)

  m_fResult = 0.0;

  m_dOpr = 0;

  m_strOpr = _T("+");

  m_bAtOnce=FALSE;

  m_fAdd1 = 0.0;

  m_fAdd2 = 0.0;

  //}}AFX_DATA_INIT

  // Note that LoadIcon does not require a subsequent DestroyIcon in Win32

  m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

結束

  祝賀你!你已經完成了第一個 Windows CE 應用程式的開發。就像你所看到的一樣,使用 Visual C++ 來開發 Windows CE 應用程式和開發一個 Win32 應用程式是一樣的簡單。大多數步驟都是一樣的。至此,本文已經就如何使用 Visual C++ 來開發 Windows CE 應用程式做了一個簡單的介紹。在下面的章節中,你可以到其它相關的地方去獲取更多的關於 Windows CE 和手持計算的知識。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977272/,如需轉載,請註明出處,否則將追究法律責任。

相關文章