📄 book_text6.htm
字号:
<P class=MsoNormal
style="WORD-BREAK: break-all; TEXT-INDENT: 1cm; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">在</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">MEMBER
VARIABLE NAME </SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">一栏当中敲入变量的名字,在</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CATEGORY</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">列表框当中可以选择变量的类型,<SPAN
lang=EN-US>VALUE表示生成一个数据变量,CONTROL类型的变量可以被用来对控件资源进行另一种类型的控制。它的类型依赖于前面选中的控件资源,比方说如果为一个编辑框控件成一个</SPAN></SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CONTROL</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">类型的成员变量,那么它只能是</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CEdit</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">类型的。我们将在后面的内容当中具体地介绍如何使用<SPAN
lang=EN-US>CONTROL类型的成员变量。</SPAN></SPAN></P>
<P align=center><SPAN style="mso-ignore: vglayout"><IMG height=301
src="book_text6.files/book_t7.jpg" width=366
v:shapes="_x0000_s1032"></SPAN><BR><SPAN lang=EN-US
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">图3.7<O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; TEXT-INDENT: 1cm; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">生成一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">VALUE</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">变量,它的数据类型是字符串。单击</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">OK</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">按钮。这时</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">WIZARD</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">就自动地添加了进行对话框数据交换所有的代码。打开对话框类的头文件和实现文件,我们发现当中增加了一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CString</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">类型的成员变量:<SPAN
lang=EN-US><O:P> </O:P></SPAN></SPAN></P><PRE style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black">// Dialog Data
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black">//{{AFX_DATA(CSongDlg)
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black"><SPAN style="mso-tab-count: 1"> </SPAN>enum { IDD = IDD_DIALOG2 };<O:P>
</O:P>
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black"><SPAN style="mso-tab-count: 1"> </SPAN>CString<SPAN style="mso-tab-count: 1"> </SPAN>m_songname;
//}}AFX_DATA</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: MS Sans Serif"> </SPAN></PRE>
<P
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">
并且在建构函数当中对这个变量进行了初始化:<SPAN lang=EN-US><O:P> </O:P></SPAN></SPAN></P><PRE style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black">CSongDlg::CSongDlg(CWnd* pParent /*=NULL*/)
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black">:CDialog(CSongDlg::IDD, pParent)<O:P>
</O:P>
{
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black"><SPAN style="mso-tab-count: 1"> </SPAN>//{{AFX_DATA_INIT(CSongDlg)
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black"><SPAN style="mso-tab-count: 1"> </SPAN>m_songname = _T("");
</SPAN><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black"><SPAN style="mso-tab-count: 1"> </SPAN>//}}AFX_DATA_INIT
}</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10.5pt; BACKGROUND: #d9d9d9; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 black"><O:P>
</O:P>
</SPAN></PRE>
<P
style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">
在新生成的对话框类<SPAN lang=EN-US>CSongDlg 中有如下一个虚函数:<O:P>
</O:P></SPAN></SPAN></P><PRE style="WORD-BREAK: break-all; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN lang=EN-US style="BACKGROUND-POSITION: 0% 50%; FONT-SIZE: 10.5pt; BACKGROUND-ATTACHMENT: scroll; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Courier New; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Times New Roman; mso-shading: white; mso-pattern: gray-15 black">virtual void DoDataExchange(CDataExchange* pDX); //DDX/DDV support<O:P>
</O:P>
</SPAN></PRE>
<P class=MsoNormal
style="WORD-BREAK: break-all; TEXT-INDENT: 1cm; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">DoDataExchange</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">函数就是对话框类和对话框资源进行</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">DDX</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">数据交换的函数。在对话框初始化的时候或者在程序中调用</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">UpdateData()</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">函数的时候,这个函数将会被调用。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">DDX_TEXT</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">这个函数可以处理多种类型的数据成员变量与控件资源之间的数据交换。这中间包括</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">int,uint,long,DWORD,CString,float,double</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">等。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">PDX</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">这个参数是一个指向一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CDataExchange</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">对象的指针通过它我们可以设置进行数据交换的方法。比方说:数据交换的方向。这段代码就可以通过</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">PDX</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">的这个标志志判断数据交换的方向是从变量到控件还是从控件到变量,然后进行不同的处理。进行数据交换之后,程序当中就可以通过成员变量来使用用户输入的数据了。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt"><O:P>
</O:P></SPAN></P>
<P class=MsoNormal
style="WORD-BREAK: break-all; TEXT-INDENT: 1cm; mso-line-height-alt: 1.3pt; mso-layout-grid-align: none; punctuation-wrap: simple"><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">对控件资源的另外一种类型的控制就是要操纵界面控件的外观。比方说,我们可以通过生成一个<SPAN
lang=EN-US>C</SPAN></SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">ONTROL</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">类型的成员变量</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">来控制对话框当中的列表控件。和</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">VALUE</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">类型变量的添加方法一样,我们可以使用<SPAN
lang=EN-US>C</SPAN></SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">LASSWIZARD</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">生</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">成一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10.5pt; mso-bidi-font-size: 10.0pt">CListControl
</SPAN><SPAN
style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'MS Sans Serif'">类型的对象,在</SPAN><SPAN
lang=EN-US
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -