?? visual c++ for windows ce.txt
字號(hào):
Visual C++ for Windows CE
Visual C++ for Windows CE 是一個(gè)可以加裝到 Visual C++ 和 Developer Studio 中的組件。它的集成開(kāi)發(fā)環(huán)境(IDE)和 Visual C++ 是一樣的,但你要弄明白目標(biāo)環(huán)境、Windows CE和新的向?qū)У奶厥庑?。這里我們將重點(diǎn)介紹一下“Windows CE 應(yīng)用程序向?qū)?Wizards)”。
Visual C++ for Windows CE 中所帶的應(yīng)用程序向?qū)且粋€(gè)非常有用的工具。一共有四種類型的新的向?qū)В鼈兊氖褂梅椒ê?Visual C++ 中常規(guī)的向?qū)](méi)什么區(qū)別,只是它們是用于 Windows CE 開(kāi)發(fā)的。你可以利用它們來(lái)快速地創(chuàng)建一個(gè)基本的應(yīng)用程序、動(dòng)態(tài)連接庫(kù)(DLL)或者組件應(yīng)用程序外殼。這四種新的向?qū)Х謩e是:WCE 應(yīng)用程序向?qū)В?WCE 動(dòng)態(tài)連接庫(kù)向?qū)?;WCE ATL COM 應(yīng)用向?qū)В?WCE MFC ActiveX 控件向?qū)А?當(dāng)然隨著 Windows CE 的普及,必然會(huì)有更多的 VC++ for Windows CE 向?qū)С霈F(xiàn)的(這是后話)。
使用Visual C++ for Windows CE編寫第一個(gè) CE 應(yīng)用程序
以下我們將通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明如何使用 Visual C++ for Windows CE 的 WCE MFC 應(yīng)用向?qū)?lái)(EXE) 來(lái)開(kāi)發(fā)一個(gè) CE 應(yīng)用程序。該應(yīng)用程序具有一個(gè)顯示著一幅位圖的視圖(view),一個(gè)點(diǎn)擊后能夠彈出一個(gè)對(duì)話框的菜單。該對(duì)話框上還包含了一個(gè) Windows 的常用控件,一個(gè)進(jìn)度控件。(具體操作步驟不再詳述)
以下是代碼部份:
{
CBitmap bmp, poldbmp;/*定義變量*/
BITMAP bmpStruct;
CDC memdc;
CRect bmpRect, clientRect;
CBrush backBrush(RGB(0,0,0));/*設(shè)置背景顏色*/
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
/*獲得分配內(nèi)存大小*/
GetClientRect(&clientRect);
/* 載入新圖到分配內(nèi)存中*/
pDC->FillRect(&clientRect, &backBrush);
bmp.LoadBitmap(IDB_WINCE_BITMAP);
bmp.GetBitmap(&bmpStruct);
/*設(shè)置位圖尺寸*/
bmpRect.left = clientRect.left + (clientRect.Width() - bmpStruct.bmWidth)/2;
bmpRect.top = clientRect.top + (clientRect.Height() - bmpStruct.bmHeight)/2;
bmpRect.right = clientRect.right - (clientRect.Width()- bmpStruct.bmWidth)/2;
bmpRect.bottom=clientRect.bottom-(clientRect.Height()-bmpStruct.bmHeight)/2;
/*分配一個(gè)新的內(nèi)存地址*/
memdc.CreateCompatibleDC(pDC);
/*調(diào)入位圖到新分配內(nèi)存*/
poldbmp = memdc.SelectObject( &bmp );
/*輸入位圖到屏幕*/
pDC->BitBlt(bmpRect.left,bmpRect.top, bmpRect.right,bmpRect.bottom,&memdc, 0,0, SRCCOPY);
memdc.SelectObject(poldbmp);
pDC->SelectObject(pOldBrush);
return TRUE;
}
以上代碼的功能是將客戶區(qū)的背景設(shè)成黑色,并將位圖放置于屏幕中心。接下來(lái)我們將創(chuàng)建并添加菜單項(xiàng)和對(duì)話框。
對(duì)話框
現(xiàn)在我們使用進(jìn)度控件來(lái)創(chuàng)建一個(gè)對(duì)話框。我們首先添加一個(gè)菜單項(xiàng)和一個(gè)消息句柄來(lái)調(diào)用該對(duì)話框。以下是詳細(xì)的操作步驟:
1. 在 IDR_MAINFRAME 菜單資源中添加一個(gè)新的彈出菜單,并命名為 Tools;
2. 在 Tools 彈出菜單中添加一個(gè)菜單項(xiàng),命名為 Run WCE First Dialog;
3. 使用 ClassWizard 給新創(chuàng)建的 Run WCE First Dialog 菜單項(xiàng)添加一個(gè)命令句柄;
下面我們來(lái)添加一個(gè)對(duì)話框,將控件放入其中,并綁定該對(duì)話框到一個(gè)類。
4. 插入一個(gè)新的對(duì)話框資源,并設(shè)置其標(biāo)題為 WCE First Dialog,資源標(biāo)號(hào)為 IDD_FIRST_DLG;
5. 將 Ok 按鈕的標(biāo)題(caption)改為 Close;
6. 將 Cancel 按鈕的標(biāo)題改為 Start,并將其資源標(biāo)號(hào)改為 IDB_START_BTN;
7. 從控件面板上拉下一個(gè)進(jìn)度控件并放置到對(duì)話框中。不要修改該進(jìn)度控件的風(fēng)格(styles)、標(biāo)題(caption)和資源標(biāo)號(hào)(resource ids);
8. 根據(jù)掌上電腦的屏幕面積調(diào)整該對(duì)話框的大小,使之能在掌上電腦中正確顯示。建議可以設(shè)為 196 x 47 象素大??;
9. 使用 ClassWizard 綁定該對(duì)話框資源到一個(gè)新的類:CWCEFirstDialog;
10. 創(chuàng)建完對(duì)話框類后,再使用 ClassWizard 來(lái)給進(jìn)度控件添加一個(gè)成員變量,叫做 m_progressCtrl;
11. 為 Start 按鈕添加一個(gè)命令按鈕句柄;
現(xiàn)在你已經(jīng)將所有的預(yù)備設(shè)置都添加到程序中去了。雖然我們所使用的進(jìn)度顯示控件和對(duì)話框并沒(méi)有什么實(shí)際意義,但也能夠滿足我們的這個(gè)短小的入門教程的要求了。當(dāng)我們選中 Run WCE First Dialog 菜單項(xiàng)時(shí),對(duì)話框?qū)@示出來(lái);然后點(diǎn)擊 Start 按鈕,進(jìn)度控件就會(huì)從0增長(zhǎng)到30000,最后顯示一個(gè)標(biāo)準(zhǔn)的 Windows 消息框;點(diǎn)擊 Close 按鈕將關(guān)閉該對(duì)話框。
為了設(shè)置進(jìn)度指示器,你必須在對(duì)話框的 WM_INITDIALOG 消息句柄中設(shè)置進(jìn)度值范圍和步長(zhǎng)。首先使用 ClassWizard 為 Windows 消息 WM_INITDIALOG 添加一個(gè)消息句柄。在 OnInitDialog() 函數(shù)中添加下列代碼來(lái)設(shè)置進(jìn)度指示器的范圍和步長(zhǎng):
BOOL CWCEFirstDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_progressCtrl.SetRange(0,30000);
m_progressCtrl.SetStep(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
下一步,當(dāng)用戶點(diǎn)擊 Start 按鈕時(shí),進(jìn)度控件的值要開(kāi)始增長(zhǎng)。在增長(zhǎng)結(jié)束時(shí),還要顯示一個(gè)消息框。下列代碼完成上述任務(wù):
void CWCEFirstDialog::OnStartBtn()
{
for(int i = 0; i <=30000; i++)
{
m_progressCtrl.StepIt();
}
AfxMessageBox(_T("Progress Complete!!!"), MB_OK);
}
完成以上代碼后,你就可以運(yùn)行你的程序看看效果了。
編程結(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í)。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -