-- 作者:wangxinxin
-- 發(fā)布時(shí)間:2010-12-10 15:17:26
-- Windows CE 開發(fā)語言Visual C++
以上代碼的功能是將客戶區(qū)的背景設(shè)成黑色,并將位圖放置于屏幕中心。接下來我們將創(chuàng)建并添加菜單項(xiàng)和對(duì)話框。
對(duì)話框
現(xiàn)在我們使用進(jìn)度控件來創(chuàng)建一個(gè)對(duì)話框。我們首先添加一個(gè)菜單項(xiàng)和一個(gè)消息句柄來調(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è)命令句柄;
下面我們來添加一個(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 來給進(jìn)度控件添加一個(gè)成員變量,叫做 m_progressCtrl;
11. 為 Start 按鈕添加一個(gè)命令按鈕句柄;
現(xiàn)在你已經(jīng)將所有的預(yù)備設(shè)置都添加到程序中去了。雖然我們所使用的進(jìn)度顯示控件和對(duì)話框并沒有什么實(shí)際意義,但也能夠滿足我們的這個(gè)短小的入門教程的要求了。當(dāng)我們選中 Run WCE First Dialog 菜單項(xiàng)時(shí),對(duì)話框?qū)@示出來;然后點(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ù)中添加下列代碼來設(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)度控件的值要開始增長(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)行你的程序看看效果了。
|