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

📄 mfc

📁 很好的MFC书籍
💻
📖 第 1 页 / 共 4 页
字号:
      <P 
      align=justify>视图CView和CView派生的有特殊功能的视图如:列表CListView,编辑CEditView,树形列表CTreeView,支持RTF的CRichEditView,基于对话框的视CFormView等等。</P>
      <P align=justify>对话框CDialog。</P>
      <P align=justify>通常,都要从这些类派生应用程序的框架窗口和视窗口或者对话框。</P>
      <P align=justify></P>
      <P align=justify>工具条CToolBar</P>
      <P align=justify>状态条CStatusBar</P>
      <P align=justify>其他各类控制窗口,如列表框CList,编辑框CEdit,组合框CComboBox,按钮Cbutton等。</P>
      <P align=justify>通常,直接使用这些类。</P>
      <P align=justify></P>
      <LI><A name=_Toc445888984></A><A name=_Toc445782387></A><A 
      name=_Toc452640883></A><A name=_Toc457298948></A><B>在MFC下窗口的销毁</B> 
      <P></P></LI></OL></OL></OL>
<P 
align=justify>窗口对象使用完毕,应该销毁。在MFC下,一个窗口对象的销毁包括HWND窗口对象的销毁和MFC窗口对象的销毁。一般情况下,MFC编程框架自动地处理了这些。</P>
<P align=justify>(1)对CFrameWnd和CView的派生类</P>
<P 
align=justify>这些窗口的关闭导致销毁窗口的函数DestroyWindow被调用。销毁Windows窗口时,MFC框架调用的最后一个成员函数是OnNcDestroy函数,该函数负责Windows清理工作,并在最后调用虚拟成员函数PostNcDestroy。CFrameWnd和CView的PostNcDestroy调用delete 
this删除自身这个MFC窗口对象。</P>
<P align=justify>所以,对这些窗口,如前所述,应在堆(Heap)中分配,而且,不要对这些对象使用delete操作。</P>
<P align=justify></P>
<P align=justify>(2)对Windows Control窗口</P>
<P 
align=justify>在它们的析构函数中,将调用DestroyWidnow来销毁窗口。如果在栈中分配这样的窗口对象,则在超出作用范围的时候,随着析构函数的调用,MFC窗口对象和它的Windows 
window对象都被销毁。如果在堆(Heap)中分配,则显式调用delete操作符,导致析构函数的调用和窗口的销毁。</P>
<P 
align=justify>所以,这种类型的窗口应尽可能在栈中分配,避免用额外的代码来销毁窗口。如前所述的CMainFrame的成员变量m_wndStatusBar和m_wndToolBar就是这样的例子。</P>
<P align=justify>(3)对于程序员直接从CWnd派生的窗口</P>
<P align=justify>程序员可以在派生类中实现上述两种机制之一,然后,在相应的规范下使用。</P>
<P align=justify>后面章节将详细的讨论应用程序退出时关闭、清理窗口的过程。</P>
<OL>
  <OL>
    <P align=justify>
    <LI><A name=_Toc445888985></A><A name=_Toc445782388></A><A 
    name=_Toc452640884></A><A name=_Toc457298949></A><B>设备描述表</B> 
    <P></P>
    <OL>
      <P align=justify>
      <LI><B><A name=_Toc445888986></A><A name=_Toc445782389></A><A 
      name=_Toc452640885></A><A name=_Toc457298950></A>设备描述表概述</B> 
      <P></P></LI></OL></LI></OL></OL>
<P 
align=justify>当一个应用程序使用GDI函数时,必须先装入特定的设备驱动程序,然后为绘制窗口准备设备描述表,比如指定线的宽度和颜色、刷子的样式和颜色、字体、剪裁区域等等。不像其他Win32结构,设备描述表不能被直接访问,只能通过系列Win32函数来间接地操作。</P>
<P 
align=justify>如同Windows“窗口类”一样,设备描述表也是一种Windows数据结构,用来描述绘制窗口所需要的信息。它定义了一个坐标映射模式、一组GDI图形对象及其属性。这些GDI对象包括用于画线的笔,绘图、填图的刷子,位图,调色板,剪裁区域,及路径(Path)。</P>
<P align=justify>表2-2列出了设备描述表的结构和各项缺省值,表2-3列出了设备描述表的类型,表2-4显示设备描述表的类型。</P>
<P align=center>表2-2 设备描述表的结构</P>
<TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
  <TBODY>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>属性 </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>缺省值 </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Background color </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>Background color setting from Windows Control Panel 
      (typically, white) </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Background mode </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>OPAQUE </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Bitmap </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>None </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Brush </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>WHITE_BRUSH </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Brush origin </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>(0,0) </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%" rowSpan=3>
      <P align=justify>Clipping region </P></TD>
    <TD vAlign=top width="73%" rowSpan=3>
      <P align=justify>Entire window or client area with the update region 
      clipped, as appropriate. Child and pop-up windows in the client area may 
      also be clipped </P></TD></TR>
  <TR></TR>
  <TR></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Palette </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>DEFAULT_PALETTE </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Current pen position </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>(0,0) </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Device origin </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>Upper left corner of the window or the client area 
  </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Drawing mode </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>R2_COPYPEN </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%" rowSpan=2>
      <P align=justify>Font </P></TD>
    <TD vAlign=top width="73%" rowSpan=2>
      <P align=justify>SYSTEM_FONT (SYSTEM_FIXED_FONT for applications written 
      to run with Windows versions 3.0 and earlier) </P></TD></TR>
  <TR></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Intercharacter spacing </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>0 </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Mapping mode </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>MM_TEXT </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Pen </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>BLACK_PEN </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Polygon-fill mode </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>ALTERNATE </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Stretch mode </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>BLACKONWHITE </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Text color </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>Text color setting from Control Panel (typically, black) 
      </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Viewport extent </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>(1,1) </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Viewport origin </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>(0,0) </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Window extent </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>(1,1) </P></TD></TR>
  <TR>
    <TD vAlign=top width="27%">
      <P align=justify>Window origin </P></TD>
    <TD vAlign=top width="73%">
      <P align=justify>(0,0) </P></TD></TR></TBODY></TABLE>
<P align=justify> </P>
<P align=center>表2-3 设备描述表的分类</P>
<TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
  <TBODY>
  <TR>
    <TD vAlign=top width="17%">
      <P align=justify>Display </P></TD>
    <TD vAlign=top width="83%">
      <P align=justify>显示设备描述表,提供对视频显示设备上的绘制操作的支持 </P></TD></TR>
  <TR>
    <TD vAlign=top width="17%">
      <P align=justify>Printer </P></TD>
    <TD vAlign=top width="83%">
      <P align=justify>打印设备描述表,提供对打印机、绘图仪设备上的绘制操作的支持 </P></TD></TR>
  <TR>
    <TD vAlign=top width="17%">
      <P align=justify>Memory </P></TD>
    <TD vAlign=top width="83%">
      <P align=justify>内存设备描述表,提供对位图操作的支持 </P></TD></TR>
  <TR>
    <TD vAlign=top width="17%">
      <P align=justify>Information </P></TD>
    <TD vAlign=top width="83%">
      <P align=justify>信息设备描述表,提供对操作设备信息获取的支持 </P></TD></TR></TBODY></TABLE>
<P align=justify>表2-3中的显示设备描述表又分三种类型,如表2-4所示。</P>
<P align=center>表2-4 显示设备描述表的分类</P>
<P align=left>
<TABLE cellSpacing=1 cellPadding=7 width=499 border=1>
  <TBODY>
  <TR>
    <TD vAlign=top width="19%">
      <P align=justify>名称 </P></TD>
    <TD vAlign=top width="27%">
      <P align=justify>特点 </P></TD>
    <TD vAlign=top width="55%">
      <P align=justify>功能 </P></TD></TR>
  <TR>
    <TD vAlign=top width="19%">
      <P align=justify>Class Device</P>
      <P align=justify>Contexts </P></TD>
    <TD vAlign=top width="27%">
      <P align=justify>提供对Win16的向后兼容 </P></TD>
    <TD vAlign=top width="55%"> </TD></TR>
  <TR>
    <TD vAlign=top width="19%">
      <P align=justify>Common</P>
      <P align=justify>Device</P>
      <P align=justify>Contexts </P></TD>
    <TD vAlign=top width="27%">
      <P align=justify>在Windows系统的高速缓冲区,数量有限 </P></TD>
    <TD vAlign=top width="55%">
      <P 
      align=justify>Applicaion获取设备描述表时,Windows用缺省值初始化该设备描述表,Application使用它完成绘制操作,然后释放 
      </P></TD></TR>
  <TR>
    <TD vAlign=top width="19%">
      <P align=justify>Private</P>
      <P align=justify>Device</P>
      <P align=justify>Contexts </P></TD>
    <TD vAlign=top width="27%">
      <P align=justify>没有数量限制,用完不需释放一次获取,多次使用 </P></TD>
    <TD vAlign=top width="55%">
      <P align=justify>多次使用过程中,每次设备描述表属性的任何修改或变化都会被保存,以支持快速绘制 
</P></TD></TR></TBODY></TABLE>
<P></P>
<P align=justify></P>

⌨️ 快捷键说明

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