新聞中心

EEPW首頁(yè) > eMbedded Visual C 與Windows CE.net

eMbedded Visual C 與Windows CE.net

——
作者: 時(shí)間:2007-02-28 來(lái)源:ARM 嵌入式資源站 收藏

淺談eMbedded Visual C 4.0對(duì)于Windows CE.net 的開(kāi)發(fā)

摘要:說(shuō)明利用eMbedded Visual C 4.0實(shí)現(xiàn)嵌入式Windows CE.net 的開(kāi)發(fā)技術(shù),介紹具體實(shí)現(xiàn)的思想和方案。

關(guān)鍵詞:嵌入式系統(tǒng) Windows CE.net eMbedded Visual C 4.0

本文主要講述如何使用eMbwedded Visual C 4.0 來(lái)進(jìn)行 Windows CE.net的開(kāi)發(fā)?如果你已經(jīng)能熟練應(yīng)用 Microsoft Visual C 這個(gè)微軟 Windows 平臺(tái)上最優(yōu)秀的開(kāi)發(fā)工具,那么這個(gè)針對(duì)于嵌入式Windows CE.net的開(kāi)發(fā)環(huán)境eMbwedded Visual C 4.0對(duì)你來(lái)說(shuō)也就相對(duì)簡(jiǎn)單了。

關(guān)于eMbedded Visual C 4.0向?qū)?/B>

eMbedded Visual C 4.0能使你開(kāi)發(fā)和Visual C 相似的應(yīng)用程序的在Windows CE.net上運(yùn)行的應(yīng)用程序,另外,還包括你所開(kāi)發(fā)對(duì)于Windows CE平臺(tái)和裝置的應(yīng)用程序時(shí)所用的幫助工具。你要弄明白目標(biāo)環(huán)境、Windows CE.net和新的向?qū)У奶厥庑浴_@里我們將重點(diǎn)介紹一下“Windows CE.net 應(yīng)用程序向?qū)?Wizards)”。

eMbedded Visual C 4.0 中所帶的應(yīng)用程序向?qū)且粋€(gè)非常有用的工具。一共有七種類(lèi)型的新的向?qū)?,它們的使用方法?Visual C 中常規(guī)的向?qū)](méi)什么區(qū)別,只是它們是用于 Windows CE.net 開(kāi)發(fā)的。你可以利用它們來(lái)快速地創(chuàng)建一個(gè)基本的應(yīng)用程序、動(dòng)態(tài)連接庫(kù)(DLL)或者組件應(yīng)用程序外殼。這七種新的向?qū)Х謩e是:WCE 應(yīng)用程序; WCE MFC向?qū)В?dll);WCE 動(dòng)態(tài)連接庫(kù) ;WCE 靜態(tài)連接庫(kù)向?qū)?;WCE ATL COM 應(yīng)用向?qū)В?WCE MFC ActiveX 控件向?qū)Ш蚖CE MFC向?qū)В?exe)。相比于臺(tái)式計(jì)算機(jī)系統(tǒng),Win32 API(包括MFC)都有很大的限制,例如,Windows CE系統(tǒng)中很多行為都不是很明顯,即使她也允許你象在臺(tái)式PC機(jī)那樣操作。 當(dāng)然隨著 Windows CE.net 的普及,必然會(huì)有更多的 eMbedded Visual C 4.0 向?qū)С霈F(xiàn)的。

使用eMbedded Visual C 4.0編寫(xiě)第一個(gè) CE 應(yīng)用程序

以下我們將通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明如何使用 eMbedded Visual C 4.0 的 WCE MFC 應(yīng)用向?qū)?lái)(EXE) 來(lái)開(kāi)發(fā)一個(gè) CE 應(yīng)用程序。eMbedded Visual C 4.0提供了以下CPU類(lèi)型的多種選擇:ARM, MIPS, Shx及 x86。雖然作為Windows CE.net的編譯器,但她也支持很多不同的對(duì)象裝置。用戶(hù)在編輯框中輸入兩個(gè)數(shù),單擊”計(jì)算結(jié)果”按鈕,則在第三個(gè)編輯框中顯示兩數(shù)結(jié)果,可以是四種算法中一種.編寫(xiě)一個(gè)小程序名為y3.

1. 定制對(duì)話框模板

設(shè)置對(duì)話框本身的屬性;向?qū)υ捒蚍胖每丶霸O(shè)置控件跳表順序.

(1) 設(shè)置對(duì)話框的屬性

(2) 添加控件并設(shè)置控件屬性.本次介紹七種圖形控件,靜態(tài)文本控件,編輯框,組框,按鈕,復(fù)選框以及單選框

(3) 設(shè)置控件跳表順序,即對(duì)每個(gè)控件賦予順序編號(hào).

2. 定義成員變量

變量的類(lèi)別可以為Value或Control.后者表示所定義的變量是控件類(lèi)的一個(gè)對(duì)象.前者表示所定義的變量是與控件相聯(lián)系的一個(gè)值.

3. 增加事件處理函數(shù)

4. 增加代碼

需要實(shí)現(xiàn)的函數(shù)包括: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 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

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);

}

上面代碼中頻繁出現(xiàn)了函數(shù)Updatedata(),其格式如下:

BOOL UpdataData(BOOL bSaveAndValidate=TRUE); Updatedata()是MFC類(lèi)CWnd的成員函數(shù),CWnd類(lèi)是很重要的一個(gè)MFC類(lèi),所有窗口類(lèi)都直接或間接繼承它。各關(guān)聯(lián)函數(shù)的初值在函數(shù)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);

}

編程結(jié)束

  祝賀你!你已經(jīng)完成了第一個(gè) Windows CE 應(yīng)用程序的開(kāi)發(fā)。就像你所看到的一樣,使用 Visual C 來(lái)開(kāi)發(fā) Windows CE 應(yīng)用程序和開(kāi)發(fā)一個(gè) Win32 應(yīng)用程序是一樣的簡(jiǎn)單。大多數(shù)步驟都是一樣的。至此,本文已經(jīng)就如何使用 Visual C 來(lái)開(kāi)發(fā) Windows CE 應(yīng)用程序做了一個(gè)簡(jiǎn)單的介紹。在下面的章節(jié)中,你可以到其它相關(guān)的地方去獲取更多的關(guān)于 Windows CE 和手持計(jì)算的知識(shí)。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉