?? csdn_文檔中心_選擇文件夾的對(duì)話框.htm
字號(hào):
style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">選擇文件夾的對(duì)話框</SPAN></H1>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 250pt; mso-char-indent-count: 25.0; mso-char-indent-size: 10.0pt"><SPAN
lang=EN-US
style="COLOR: #333333; FONT-SIZE: 10pt; mso-bidi-font-family: Arial"><SPAN
style="mso-spacerun: yes">
</SPAN><SPAN style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN><A
href="http://www.csdn.net/develop/author/netauthor/he_zhidan/"><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">何志丹</SPAN></A></SPAN></P>
<H2 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體">1,分析<?xml:namespace prefix = o ns =
"urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></H2><PRE style="MARGIN-RIGHT: 36pt"><SPAN lang=EN-US style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt">1,彈出對(duì)話框讓用戶選擇一個(gè)合適的文件夾(或文件).<o:p></o:p></SPAN></PRE><PRE style="MARGIN-RIGHT: 36pt"><SPAN lang=EN-US style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt">2,將用戶選擇的文件夾或文件記錄在ini(或注冊(cè)表)中,下次直接定位到此文件夾或文件.<o:p></o:p></SPAN></PRE><PRE style="MARGIN-RIGHT: 36pt"><SPAN lang=EN-US style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 10.0pt">3,用戶可以指定關(guān)聯(lián)窗口(一般是編輯框).如果不將內(nèi)容寫(xiě)進(jìn)注冊(cè)表,則初始文件夾為編輯框的內(nèi)容.用戶選擇結(jié)束后,將用戶的選擇顯示在關(guān)聯(lián)窗口上.<o:p></o:p></SPAN></PRE>
<H2 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體">2,設(shè)計(jì)</SPAN><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt"><o:p></o:p></SPAN></H2>
<H3 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt">2.1,父窗口:<o:p></o:p></SPAN></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果對(duì)話框<SPAN
lang=EN-US>A上有一個(gè)按鈕B,用戶點(diǎn)擊B,會(huì)彈出文件夾對(duì)話框,那么文件夾對(duì)話框的父窗口為A.否則用戶可以點(diǎn)擊A上的其它按鈕,造成不可預(yù)料的錯(cuò)誤.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果用戶指定了父窗口<SPAN
lang=EN-US>,就以用戶指定的窗口為父窗口.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果用戶關(guān)聯(lián)了控件<SPAN
lang=EN-US>,就以控件的父窗口為父窗口.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果存在主窗口<SPAN
lang=EN-US>,就以主窗口為父窗口,否則父窗口為NULL.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 32.25pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt"> <o:p></o:p></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt">2.2,ini(或注冊(cè)表)內(nèi)容:<o:p></o:p></SPAN></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">用兩個(gè)成員變量<SPAN
lang=EN-US>,記錄節(jié)名(</SPAN></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">m_strIniAppName)</SPAN><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">和屬性名<SPAN
lang=EN-US>(</SPAN></SPAN><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">m_strIniKeyName</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">).如果屬性名或節(jié)名為空,則不存進(jìn)ini或注冊(cè)表.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">屬性名默認(rèn)值為空<SPAN
lang=EN-US>,如果想存進(jìn)ini,必須指定屬性名.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">節(jié)名的默認(rèn)值為</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">"文件夾初始路徑"</SPAN><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt"> <o:p></o:p></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt">2.3,標(biāo)題<o:p></o:p></SPAN></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果用戶指定了標(biāo)題<SPAN
lang=EN-US>,則用用戶指定的標(biāo)題.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果用戶指定了注冊(cè)表的屬性名<SPAN
lang=EN-US>,則標(biāo)題為”請(qǐng)為%s選擇合適的目錄:”,%s表示ini的屬性名.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">否則標(biāo)題為<SPAN
lang=EN-US>"請(qǐng)選擇合適的目錄:"<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果想讓標(biāo)題為空<SPAN
lang=EN-US>,可指定標(biāo)題為一個(gè)空格.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt"> <o:p></o:p></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt">2.4</SPAN><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 16.0pt">初始路徑</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt"><o:p></o:p></SPAN></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果用戶指定了初始路徑<SPAN
lang=EN-US>,顯示用戶指定的路徑.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果用戶將上次選擇的路徑存儲(chǔ)在<SPAN
lang=EN-US>ini,則從ini中讀取.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">如果關(guān)聯(lián)了控件<SPAN
lang=EN-US>,以此控件的內(nèi)容為初始路徑.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt">否則初始路徑為空<SPAN
lang=EN-US>.<o:p></o:p></SPAN></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt">2.5,風(fēng)格目前只有兩種:<o:p></o:p></SPAN></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">SD_DIR<SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-tab-count: 2">
</SPAN>:只顯示文件夾<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">SD_DIR_FILE<SPAN
style="mso-spacerun: yes">
</SPAN>:顯示文件夾和文件<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt; mso-font-kerning: 0pt">2.6,如果文件夾太長(zhǎng)則顯示部分<o:p></o:p></SPAN></H3>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">即<SPAN
lang=EN-US>: 盤符+1到6個(gè)"." + 最后一級(jí)文件夾或文件<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt"> <o:p></o:p></SPAN></P>
<H2 style="MARGIN: 13pt 0cm"><SPAN lang=EN-US
style="FONT-FAMILY: 宋體">3,實(shí)現(xiàn)<o:p></o:p></SPAN></H2>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">enum
Flag{SD_DIR=1,SD_DIR_FILE=3};<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">class<SPAN
style="mso-spacerun: yes"> </SPAN>CDirectoryDialog<SPAN
style="mso-spacerun: yes"> </SPAN><o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">{<SPAN
style="mso-tab-count: 1"> </SPAN><o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt">public:<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CDirectoryDialog();<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CDirectoryDialog(CString
strIniKeyName);<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1"> </SPAN>virtual
~CDirectoryDialog();<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN><o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>//彈出一個(gè)對(duì)話框,讓用戶選擇文件夾<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1"> </SPAN>CString
ShowDirectoryTree(CWnd
*pBuddyWnd);//入口參數(shù)是相關(guān)聯(lián)的窗口<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1"> </SPAN>CString
ShowDirectoryTree(CString
strIniDir="");//入口參數(shù)是初如值<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>//寫(xiě)或讀取注冊(cè)表(或ini)中的值<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋體; FONT-SIZE: 12pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1"> </SPAN>void
SetDefaultDirectory(CString
strDefaultDirectory);<o:p></o:p></SPAN></P>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -