新聞中心

        EEPW首頁 > eMbedded Visual C 與Windows CE.net

        eMbedded Visual C 與Windows CE.net

        ——
        作者: 時間:2007-02-28 來源:ARM 嵌入式資源站 收藏

        淺談eMbedded Visual C 4.0對于Windows CE.net 的開發

        摘要:說明利用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 COM 應用向導; WCE MFC ActiveX 控件向導和WCE MFC向導(.exe)。相比于臺式計算機系統,Win32 API(包括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提供了以下CPU類型的多種選擇: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 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);

        }

        上面代碼中頻繁出現了函數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 和手持計算的知識。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江口县| 涿鹿县| 招远市| 乐安县| 宜兴市| 博客| 湖州市| 鲁甸县| 内乡县| 上林县| 曲周县| 滁州市| 沂南县| 临武县| 文昌市| 平舆县| 衡阳县| 太和县| 辉南县| 肥乡县| 安宁市| 冷水江市| 新津县| 兰考县| 通河县| 沾益县| 章丘市| 莫力| 华阴市| 建宁县| 中超| 商河县| 城市| 樟树市| 上林县| 库尔勒市| 措美县| 新巴尔虎左旗| 巫山县| 文昌市| 长宁县|