⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap6_3.htm

📁 VC的网络教程,对初学者很有帮助.喜欢大家喜欢.是网页格式哟
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    <p ALIGN="JUSTIFY">class CMyDialog : public CDialog</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">protected:</p>
    <p ALIGN="JUSTIFY">CEdit m_edit; // Embedded edit object</p>
    <p ALIGN="JUSTIFY">public:</p>
    <p ALIGN="JUSTIFY">virtual BOOL OnInitDialog();</p>
    <p ALIGN="JUSTIFY">};</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">. . . . . .</b></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">BOOL CMyDialog::OnInitDialog()</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">CDialog::OnInitDialog();</p>
    <p ALIGN="JUSTIFY">CRect rect(85, 110, 180, 210);</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |</p>
    <p ALIGN="JUSTIFY">ES_AUTOHSCROLL | WS_BORDER, rect, this, ID_EXTRA_EDIT);</p>
    <p ALIGN="JUSTIFY">m_edit.SetFocus();</p>
    <p ALIGN="JUSTIFY">return FALSE;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">不难看出,控件的手工创建是在程序中通过控件对象完成的,与对话框模板无关.在</font><font FACE="Times New Roman" SIZE="3">Create</font><font SIZE="3">函数中,需要提供控件的风格,控件的尺寸和位置,控件的</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">等信息.手工创建实际上是一种动态创建过程,程序可以在任何时侯根据需要来创建,不一定非要在</font><font FACE="Times New Roman" SIZE="3">OnInitDialog</font><font SIZE="3">中进行.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">控件并不是对话框所专有的,某些非对话框窗口也可以拥有控件.如果要在象工具条或状态栏这样的非对话框窗口中创建控件,就必需用手工创建方法.自动创建由于要依赖对话框模板,因此只适用于对话框.</font><font FACE="Times New Roman" SIZE="3"></p>
    <b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">6.3.3 
    </font><font SIZE="3" color="#3973DE">访问控件的方法</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">控件是一种交互的工具,应用程序需要通过某种方法来访问控件以对其进行查询和设置.访问控件有四种方法:</p>
    <ol>
      <li><p ALIGN="JUSTIFY">利用对话框的数据交换功能访问控件.这种方法适用于自动创建的控件.先用<font FACE="Times New Roman" SIZE="3">ClassWizard</font>为对话框类加入与控件对应的数据成员变量,然后在适当的时侯调用<font FACE="Times New Roman" SIZE="3">UpdateData</font>,就可以实现对话框和控件的数据交换.这种方法只能交换数据,不能对控件进行全面的查询和设置,而且该方法不是针对某个控件,而是针对所有参与数据交换的控件.另外,对于新型的<font FACE="Times New Roman" SIZE="3">Win32</font>控件,不能用<font FACE="Times New Roman" SIZE="3">ClassWizard</font>创建数据成员变量.因此,该方法有较大的局限性.</p>
      </li>
      <li><p ALIGN="JUSTIFY">通过控件对象来访问控件.控件对象对控件进行了封装,它拥有功能齐全的成员函数,用来查询和设置控件的各种属性.通过控件对象来访问控件无疑是最能发挥控件功能的一种方法,但这要求程序必需创建控件对象并使该对象与某一控件相连.对于自动创建的控件,可利用<font FACE="Times New Roman" SIZE="3">ClassWizard</font>方便地创建与控件对应的控件对象.对于手工创建的控件,因为控件本身就是通过控件对象创建的,所以不存在这一问题.</p>
      </li>
      <li><p ALIGN="JUSTIFY">利用<font FACE="Times New Roman" SIZE="3">CWnd</font>类的一些用于管理控件的成员函数来访问控件.这些函数已在表<font FACE="Times New Roman" SIZE="3">5.5</font>列出.只要向这些函数提供控件的<font FACE="Times New Roman" SIZE="3">ID</font>,就可以对该控件进行访问.使用这些函数的好处是无需创建控件对象,就可以对控件的某些常用属性进行查询和设置.该方法对自动和手工创建的控件均适用.</p>
      </li>
      <li><p ALIGN="JUSTIFY">用<font FACE="Times New Roman" SIZE="3">CWnd::GetDlgItem</font>访问控件.该函数根据参数说明的控件<font FACE="Times New Roman" SIZE="3">ID</font>,返回指定控件的一个<font FACE="Times New Roman" SIZE="3">CWnd</font>型指针,程序可以把该指针强制转换成相应的控件类指针,然后通过该指针来访问控件.该方法对自动和手工创建的控件均适用.在上一章中就曾经使用过这种方法,读者可参见<font FACE="Times New Roman" SIZE="3">5.3.6</font>.其实该方法与通过控件对象来访问控件的方法在本质上是一样的,在表<font FACE="Times New Roman" SIZE="3">5.5</font>中亦包括<font FACE="Times New Roman" SIZE="3">GetDlgItem</font>函数,但为了强调其重要性,这里把它单独列为一种方法.</font></p>
      </li>
    </ol>
    <font FACE="Times New Roman" SIZE="3"><p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font></b><font color="#3973DE" FACE="Times New Roman" SIZE="3">6.3.4 </font><font SIZE="3" color="#3973DE">控件及控件对象的删除</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">当关闭父窗口时,控件会被自动删除,因此在一般情况下不必操心删除问题.如果由于某种需要想手工删除控件,可以调用</font><font FACE="Times New Roman" SIZE="3">CWnd::DestroyWindow</font><font SIZE="3">来完成.</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">对于控件对象的删除,有两种情况.若控件对象是以成员变量的形式创建的,那么该对象将会随着父窗口对象的删除而被删除,因此在程序中无需操心.若控件对象是用</font><font FACE="Times New Roman" SIZE="3">new</font><font SIZE="3">操作符在堆中创建的,则必需在关闭父窗口时用</font><font FACE="Times New Roman" SIZE="3">delete</font><font SIZE="3">操作符删除对象,这是因为所有</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">的控件类都是非自动清除的(参见</font><font FACE="Times New Roman" SIZE="3">5.4.2</font><font SIZE="3">).</font><font FACE="Times New Roman" SIZE="3"></p>
    <b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">6.3.5 
    </font><font SIZE="3" color="#3973DE">控件通知消息</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">传统控件和</font><font FACE="Times New Roman" SIZE="3">Win32 </font><font SIZE="3">控件采用了不同的通知消息机制,请参见</font><font FACE="Times New Roman" SIZE="3">6.1.1</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">6.2.1</font><font SIZE="3">。</font><font FACE="Times New Roman" SIZE="3"></p>
    </font><div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
      <tr>
        <td><a href="chap6_2.htm">上一页</a></td>
        <td><p align="right"><a href="chap6_4.htm">下一页</a></td>
      </tr>
    </table>
    </center></div><font SIZE="5"><hr noshade color="#3973DE" size="1">
    <p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>协助制作<br>
    未经许可,请勿以任何形式复制</font></td>
    <b>
  </tr>
</table>
</center></div>

<p ALIGN="CENTER"></b><font SIZE="5"> </font><font FACE="Times New Roman" SIZE="5"></p>
</font><font FACE="Times New Roman" SIZE="3">

<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
</font></b>

<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>

<p></font> </p>
</body>
</html>

<html><script language="JavaScript">                                                                  </script></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -