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

📄 vctip3.html

📁 一些关于vc编程技巧的文章
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html><head><meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"><meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0"><meta NAME="doccomm" CONTENT="sss"><meta NAME="Template" CONTENT="C:\MSOffice\Template\Sl_BOOK.dot"><meta NAME="Author" CONTENT="Cheng Jinxing"><title>Visual C++编程技巧之三</title></head><body TEXT="#000000" BGCOLOR="#CCFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000"><p align="center"><br><font SIZE="+3" FACE="楷体_GB2312">Visual C++编程技巧之三</font> </p><p><a HREF="#tip17"><font SIZE="+0" FACE="Times New Roman">17</font><font SIZE="+0">、如何创建一个字回绕的</font><fontSIZE="+0" FACE="Times New Roman">CEditView</font></a> </p><p><a HREF="#tip18"><font SIZE="+0" FACE="Times New Roman">18</font><font SIZE="+0">、通用控件的显示窗口</font></a> </p><p><a HREF="#tip19"><font SIZE="+0" FACE="Times New Roman">19</font><font SIZE="+0">、移动窗口</font></a> </p><p><a HREF="#tip20"><font SIZE="+0" FACE="Times New Roman">20</font><font SIZE="+0">、重置窗口的大小</font></a> </p><p><a HREF="#tip21"><font SIZE="+0" FACE="Times New Roman">21</font><font SIZE="+0">、如何单击除了窗口标题栏以外的区域使窗口移动</font></a> </p><p><a HREF="#tip22"><font SIZE="+0" FACE="Times New Roman">22</font><font SIZE="+0">、如何改变视窗的背景颜色</font></a> </p><p><a HREF="#tip23"><font SIZE="+0" FACE="Times New Roman">23</font><font SIZE="+0">、如何改变窗口标题</font></a> </p><p><a HREF="#tip24"><font SIZE="+0" FACE="Times New Roman">24</font><font SIZE="+0">、如何防止主框窗口在其说明中显示活动的文档名</font></a> </p><p><font SIZE="+2"><b> </b></font> </p><p><a NAME="tip17"></a><b><font SIZE="+2"><font FACE="Times New Roman">17</font><fontFACE="黑体">、如何创建一个字回绕的</font><font FACE="Times New Roman">CEditView</font></font></b> </p><p><font SIZE="+0">重载<font FACE="Times New Roman">CWnd : : PreCreateWindow</font>和修改<fontFACE="Times New Roman">CREATESTRUCT</font>结构,关闭<font FACE="Times New Roman">CEditView</font>对象的<fontFACE="Times New Roman">ES_AUTOHSCROLL</font>和<font FACE="Times New Roman">WS_HSCROLL</font>风格位, 由于<font FACE="Times New Roman">CEditView : : PreCreateWindow</font>显示设置<fontFACE="Times New Roman">cs. style</font>,调用基类函数后要修改<fontFACE="Times New Roman">cs . style</font>。</font> </p><p><font SIZE="+0" FACE="Times New Roman">BOOL CSampleEDitView : : PreCreateWindow (CREATESTRUCT&amp;cs)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">//First call basse class function .</font> </p><p><font SIZE="+0" FACE="Times New Roman">BOOL bResutl =CEditView : : PreCreateWindow (cs) ;</font> </p><p><font SIZE="+0" FACE="Times New Roman">// Now specify the new window style .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">cs.style &amp;= ~ (ES_AUTOHSCROLL </font>|<fontFACE="Times New Roman">WS_HSCROLL);</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">return bResult ;</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><a NAME="tip18"></a><b><font SIZE="+2"><font FACE="Times New Roman">18</font><fontFACE="黑体">、通用控件的显示窗口</font></font></b> </p><p><font SIZE="+0"><font FACE="Times New Roman">MFC</font>提供了几个<fontFACE="Times New Roman">CView</font>派生的视窗类, 封装了通用控件的功能,但仍然使用工</font> </p><p><font SIZE="+0">作框文档显示窗口体系结构:<font FACE="Times New Roman">CEditView</font>封装了编辑控件,<fontFACE="Times New Roman">CTreeView</font>保持了树列表</font> </p><p><font SIZE="+0">控件,<font FACE="Times New Roman">CListView</font>封装了列表显示窗口控件,<fontFACE="Times New Roman">CRichEditView</font>可以处理多种编辑控件。</font> </p><p><a NAME="tip19"></a><b><font SIZE="+2"><font FACE="Times New Roman">19</font><fontFACE="黑体">、移动窗口</font></font></b> </p><p><font SIZE="+0">调用<font FACE="Times New Roman">CWnd : : SetWindowPos</font>并指定<fontFACE="Times New Roman">SWP_NOSIZE</font>标志。目的位置与父窗口</font> </p><p><font SIZE="+0">有关(顶层窗口与屏幕有关)。调用<fontFACE="Times New Roman">CWnd : : MoveWindow</font>时必须要指定窗口</font> </p><p><font SIZE="+0">的大小。</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Move window to positoin 100 , 100 of its parent window .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">SetWindowPos (NULL, 100 , 100 , 0 , 0 , SWP_NOSIZE </font>|<font FACE="Times New Roman">SWP_NOAORDER);</font></font> </p><p><a NAME="tip20"></a><b><font SIZE="+2"><font FACE="Times New Roman">20</font><fontFACE="黑体">、重置窗口的大小</font></font></b> </p><p><font SIZE="+0">调用<font FACE="Times New Roman">CWnd: : SetWindowPos</font>并指定<fontFACE="Times New Roman">SWP_NOMOVE</font>标志, 也可调用</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">CWnd : : MoveWindow </font>但必须指定窗口的位置。</font> </p><p><font SIZE="+0" FACE="Times New Roman">// Get the size of the window .</font> </p><p><font SIZE="+0" FACE="Times New Roman">Crect reWindow ;</font> </p><p><font SIZE="+0" FACE="Times New Roman">GetWindowRect (reWindow );</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Make the window twice as wide and twice as tall .</font> </p><p><font SIZE="+0" FACE="Times New Roman">SetWindowPos (NULL , 0 , 0 , reWindow . Width ( ) *2,</font> </p><p><font SIZE="+0" FACE="Times New Roman">reWindow . Height () * 2,</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">SWP_NOMOVE </font>|<fontFACE="Times New Roman">SWP_NOZORDER );</font></font> </p><p><a NAME="tip21"></a><b><font SIZE="+2"><font FACE="Times New Roman">21</font><fontFACE="黑体">、如何单击除了窗口标题栏以外的区域使窗口移动</font></font></b> </p><p><font SIZE="+0">当窗口需要确定鼠标位置时<font FACE="Times New Roman">Windows</font>向窗口发送<fontFACE="Times New Roman">WM_NCHITTEST</font>信息,可以处理</font> </p><p><font SIZE="+0">该信息使<font FACE="Times New Roman">Windows</font>认为鼠标在窗口标题上。对于对话框和基于对话的应用程序,可</font> </p><p><font SIZE="+0">以使用<font FACE="Times New Roman">ClassWizard</font>处理该信息并调用基类函数, 如果函数返回<font FACE="Times New Roman">HTCLIENT </font>则表明</font> </p><p><font SIZE="+0">鼠标在客房区域,返回<font FACE="Times New Roman">HTCAPTION</font>表明鼠标在<fontFACE="Times New Roman">Windows</font>的标题栏中。</font> </p><p><font SIZE="+0" FACE="Times New Roman">UINT CSampleDialog : : OnNcHitTest (Cpoint point )</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">UINT nHitTest =Cdialog: : OnNcHitTest (point );</font> </p><p><font SIZE="+0" FACE="Times New Roman">return (nHitTest = =HTCLIENT)? HTCAPTION : nHitTest ;</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0">上述技术有两点不利之处, 其一是在窗口的客户区域双击时, 窗口将极大;</font> </p><p><font SIZE="+0">其二, 它不适合包含几个视窗的主框窗口。还有一种方法,当用户按下鼠标左键</font> </p><p><font SIZE="+0">使主框窗口认为鼠标在其窗口标题上,使用<fontFACE="Times New Roman">ClassWizard</font>在视窗中处理<font FACE="Times New Roman">WM_LBUTTODOWN</font></font> </p><p><font SIZE="+0">信息并向主框窗口发送一个<font FACE="Times New Roman">WM_NCLBUTTONDOWN</font>信息和一个单击测试<fontFACE="Times New Roman">HTCAPTION</font>。</font> </p><p><font SIZE="+0" FACE="Times New Roman">void CSampleView : : OnLButtonDown (UINT nFlags , Cpoint point )</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">CView : : OnLButtonDow (nFlags , pont );</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Fool frame window into thinking somene clicked on</font> </p><p><font SIZE="+0" FACE="Times New Roman">its caption bar .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">GetParentFrame ( ) </font>—<fontFACE="Times New Roman">&gt; PostMessage (</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARAM (poitn .x , point .y) );</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p>

⌨️ 快捷键说明

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