?? teach_road_51.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="聞怡洋 wyy_cq@21cn.com">
<title>Visual C++/MFC開發指南</title>
<SCRIPT LANGUAGE='JavaScript' SRC='../../submit_navigate_bar.js'></SCRIPT>
<link REL="stylesheet" HREF="../../main.css">
</head>
<SCRIPT LANGUAGE='JavaScript'>write_body();</SCRIPT>
<SCRIPT LANGUAGE='JavaScript'>write_bar();</SCRIPT>
<p align="center"><a
HREF="http://www.0828.com/pay/cgi-bin/random.cgi?job=go&id=820"
target="_blank">
<img SRC="http://www.0828.com/pay/cgi-bin/random.cgi?id=820" BORDER="0"
width="468" height="60"></a><br>
<font size="2"><a href="http://www.0828.com/pay/index.html"><img border="0"
src="http://www.0828.com/pay/code.gif" width="468" height="15"></a><br>
<small>你每點一下上面的廣告我就能有更多的上網時間為大家尋找資料</small></font>
</p>
<table width=98% cellspacing="0" cellpadding="0" align=center><!--整體框架-->
<tr><td>
<table border=0 width="100%" cellspacing="0" cellpadding="2"><!--標記放置區域-->
<tr>
<td width="30%" align="center" bgcolor="#003D84" valign=middle><img src=../../img/brand_200_60.gif width=200 height=60 alt="LOGO1"></td>
<td width="70%" align="center" bgcolor="#003D84" valign=middle><img src=../../img/logo_400_60.gif width=400 height=60 alt="LOGO2"></td>
</tr>
<tr>
<td colspan="2" bgcolor="#0080C0" align=center><font color=white>您當前位置</font></font> <a href=../../index.htm><font color=white>首頁</font></a> <a href=../index.htm><font color=white>開發教程</font></a> <a href=index.htm><font color=white><font class=engul>Visual C++/MFC</font>入門教程</font></a> <font color=white><font color=white>5.1 使用資源編輯器編輯對話框</font><SCRIPT LANGUAGE='JavaScript'>write_command();</SCRIPT></td>
</tr>
</table><!--標記放置區域 END-->
<table border=0 width=100% cellspacing="0" cellpadding="0">
<tr>
<td><!--begin-->
<br>
<p align=center><big>5.1 使用資源編輯器編輯對話框</big></p>
<table border=0 align=center width=100%>
<tr><td>
<small>
<p>在Windows開發中彈出對話框是一種常用的輸入/輸出手段,同時編輯好的對話框可以保存在資源文件中。Visual C++提供了對話框編輯工具,利用編輯工具可以方便的添加各種控件到對話框中,而且利用ClassWizard可以方便的生成新的對話框類和映射消息。</p>
<p>首先資源列表中按下右鍵,可以在彈出菜單中選擇“插入對話框”,<a href=51_g1.gif target=_blank>如圖1</a>。然后再打開該對話框進行編輯,你會在屏幕上看到一個控件板,<a href=51_g2.gif target=_blank>如圖2</a>。你可以將所需要添加的控件拖到對話框上,或是先選中后再在對話框上用鼠標畫出所占的區域。</p>
<p>接下來我們在對話框上產生一個輸入框,和一個用于顯示圖標的圖片框。之后我們使用鼠標右鍵單擊產生的控件并選擇其屬性,<a href=51_g3.gif target=_blank>如圖3</a>。我們可以在屬性對話框中編輯控件的屬性同時也需要指定控件ID,<a href=51_g4.gif target=_blank>如圖4</a>,如果在選擇對話框本身的屬性那么你可以選擇對話框的一些屬性,包括字體,外觀,是否有系統菜單等等。最后我們編輯圖片控件的屬性,<a href=51_g5.gif target=_blank>如圖5</a>,我們設置控件的屬性為顯示圖標并指明一個圖標ID。</p>
<p>接下來我們添加一些其他的控件,最后的效果<a href=51_g6.gif target=_blank>如圖6</a>。按下Ctrl-T可以測試該對話框。此外在對話框中還有一個有用的特性,就是可以利用Tab鍵讓輸入焦點在各個控件間移動,要達到這一點首先需要為控件設置在Tab鍵按下時可以接受焦點移動的屬性Tab Stop,如果某一個控件不打算利用這一特性,你需要清除這一屬性。然后從菜單“Layout”選擇Tab Order來確定焦點移動順序,<a href=51_g7.gif target=_blank>如圖7</a>。使用鼠標依此點擊控件就可以重新規定焦點移動次序。最后按下Ctrl-T進行測試。</p>
<p>最后我們需要為對話框產生新的類,ClassWizard可以替我們完成大部分的工作,我們只需要填寫幾個參數就可以了。在編輯好的對話框上雙擊,然后系統回詢問是否添加新的對話框,選擇是并在接下來的對話框中輸入類名就可以了。ClassWizard會為你產生所需要的頭文件和CPP文件。然后在需要使用的地方包含相應的頭文件,對于有模式對話框使用DoModal()產生,對于無模式對話框使用Create()產生。相關代碼如下;
<pre>
void CMy51_s1View::OnCreateDlg()
{//產生無模式對話框
CTestDlg *dlg=new CTestDlg;
dlg->Create(IDD_TEST_DLG);
dlg->ShowWindow(SW_SHOW);
}
void CMy51_s1View::OnDoModal()
{//產生有模式對話框
CTestDlg dlg;
int iRet=dlg.DoModal();
TRACE("dlg return %d\n",iRet);
}
</pre>
<a href=51_s1.zip>下載例子</a>。如果你在調試這個程序時你會發現程序在退出后會有內存泄漏,這是因為我沒有釋放無模式對話框所使用的內存,這一問題會在以后的章節<a href=teach_road_53.htm>5.3 創建無模式對話框</a>中專門講述。</p>
<p><b>關于在使用對話框時Enter鍵和Escape鍵的處理:</b>在使用對話框是你會發現當你按下Enter鍵或Escape鍵都會退出對話框,這是因為Enter鍵會引起CDialog::OnOK()的調用,而Escape鍵會引起CDialog::OnCancel()的調用。而這兩個調用都會引起對話框的退出。在MFC中這兩個成員函數都是虛擬函數,所以我們需要進行重載,如果我們不希望退出對話框那么我們可以在函數中什么都不做,如果需要進行檢查則可以添加檢查代碼,然后調用父類的OnOK()或OnCancel()。相關代碼如下;
<pre>
void CTestDlg::OnOK()
{
AfxMessageBox("你選擇確定");
CDialog::OnOK();
}
void CTestDlg::OnCancel()
{
AfxMessageBox("你選擇取消");
CDialog::OnCancel();
}
</pre>
</p>
<p></p>
<p></p>
</small>
</td>
</tr>
<tr><td>
<small>
<p align=center><a href=index.htm#charpter5>返回</a></p>
</small>
</td></tr>
</table>
<p align=center><small>版權所有 聞怡洋 <a href=http://www.vchelp.net/>http://www.vchelp.net/</a></small></p>
</td><!--end-->
</tr>
</table>
</td></tr></table><!--整體框架 END-->
<SCRIPT LANGUAGE='JavaScript'>write_tail();</SCRIPT>
</body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -