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

📄 visual c++编程技巧之三.htm

📁 载之“阿蒙编程乐园”
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0038)http://www.vchome.net/tech/vctip3.html -->
<HTML><HEAD><TITLE>Visual C++编程技巧之三</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 5.50.4134.100" name=GENERATOR>
<META content=sss name=doccomm>
<META content=C:\MSOffice\Template\Sl_BOOK.dot name=Template>
<META content="Cheng Jinxing" name=Author></HEAD>
<BODY text=#000000 vLink=#551a8b aLink=#ff0000 link=#0000ee bgColor=#ccffff>
<P align=center><BR><FONT face=楷体_GB2312 size=+3>Visual C++编程技巧之三</FONT> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip17"><FONT 
face="Times New Roman" size=+0>17</FONT><FONT size=+0>、如何创建一个字回绕的</FONT><FONT 
face="Times New Roman" size=+0>CEditView</FONT></A> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip18"><FONT 
face="Times New Roman" size=+0>18</FONT><FONT size=+0>、通用控件的显示窗口</FONT></A> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip19"><FONT 
face="Times New Roman" size=+0>19</FONT><FONT size=+0>、移动窗口</FONT></A> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip20"><FONT 
face="Times New Roman" size=+0>20</FONT><FONT size=+0>、重置窗口的大小</FONT></A> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip21"><FONT 
face="Times New Roman" size=+0>21</FONT><FONT 
size=+0>、如何单击除了窗口标题栏以外的区域使窗口移动</FONT></A> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip22"><FONT 
face="Times New Roman" size=+0>22</FONT><FONT size=+0>、如何改变视窗的背景颜色</FONT></A> 
</P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip23"><FONT 
face="Times New Roman" size=+0>23</FONT><FONT size=+0>、如何改变窗口标题</FONT></A> </P>
<P><A href="http://www.vchome.net/tech/vctip3.html#tip24"><FONT 
face="Times New Roman" size=+0>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><FONT face=黑体>、如何创建一个字回绕的</FONT><FONT 
face="Times New Roman">CEditView</FONT></FONT></B> </P>
<P><FONT size=+0>重载<FONT face="Times New Roman">CWnd : : 
PreCreateWindow</FONT>和修改<FONT 
face="Times New Roman">CREATESTRUCT</FONT>结构,关闭<FONT 
face="Times New Roman">CEditView</FONT>对象的<FONT 
face="Times New Roman">ES_AUTOHSCROLL</FONT>和<FONT 
face="Times New Roman">WS_HSCROLL</FONT>风格位, 由于<FONT 
face="Times New Roman">CEditView : : PreCreateWindow</FONT>显示设置<FONT 
face="Times New Roman">cs. style</FONT>,调用基类函数后要修改<FONT 
face="Times New Roman">cs . style</FONT>。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>BOOL CSampleEDitView : : PreCreateWindow 
(CREATESTRUCT&amp;cs)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//First call basse class function 
.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>BOOL bResutl =CEditView : : 
PreCreateWindow (cs) ;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>// Now specify the new window style 
.</FONT> </P>
<P><FONT size=+0><FONT face="Times New Roman">cs.style &amp;= ~ (ES_AUTOHSCROLL 
</FONT>|<FONT face="Times New Roman">WS_HSCROLL);</FONT></FONT> </P>
<P><FONT face="Times New Roman" size=+0>return bResult ;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><A name=tip18></A><B><FONT size=+2><FONT 
face="Times New Roman">18</FONT><FONT face=黑体>、通用控件的显示窗口</FONT></FONT></B> </P>
<P><FONT size=+0><FONT face="Times New Roman">MFC</FONT>提供了几个<FONT 
face="Times New Roman">CView</FONT>派生的视窗类, 封装了通用控件的功能,但仍然使用工</FONT> </P>
<P><FONT size=+0>作框文档显示窗口体系结构:<FONT 
face="Times New Roman">CEditView</FONT>封装了编辑控件,<FONT 
face="Times New Roman">CTreeView</FONT>保持了树列表</FONT> </P>
<P><FONT size=+0>控件,<FONT 
face="Times New Roman">CListView</FONT>封装了列表显示窗口控件,<FONT 
face="Times New Roman">CRichEditView</FONT>可以处理多种编辑控件。</FONT> </P>
<P><A name=tip19></A><B><FONT size=+2><FONT 
face="Times New Roman">19</FONT><FONT face=黑体>、移动窗口</FONT></FONT></B> </P>
<P><FONT size=+0>调用<FONT face="Times New Roman">CWnd : : 
SetWindowPos</FONT>并指定<FONT 
face="Times New Roman">SWP_NOSIZE</FONT>标志。目的位置与父窗口</FONT> </P>
<P><FONT size=+0>有关(顶层窗口与屏幕有关)。调用<FONT face="Times New Roman">CWnd : : 
MoveWindow</FONT>时必须要指定窗口</FONT> </P>
<P><FONT size=+0>的大小。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//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><FONT face=黑体>、重置窗口的大小</FONT></FONT></B> </P>
<P><FONT size=+0>调用<FONT face="Times New Roman">CWnd: : 
SetWindowPos</FONT>并指定<FONT face="Times New Roman">SWP_NOMOVE</FONT>标志, 
也可调用</FONT> </P>
<P><FONT size=+0><FONT face="Times New Roman">CWnd : : MoveWindow 
</FONT>但必须指定窗口的位置。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>// Get the size of the window .</FONT> 
</P>
<P><FONT face="Times New Roman" size=+0>Crect reWindow ;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>GetWindowRect (reWindow );</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Make the window twice as wide and 
twice as tall .</FONT> </P>
<P><FONT face="Times New Roman" size=+0>SetWindowPos (NULL , 0 , 0 , reWindow . 
Width ( ) *2,</FONT> </P>
<P><FONT face="Times New Roman" size=+0>reWindow . Height () * 2,</FONT> </P>
<P><FONT size=+0><FONT face="Times New Roman">SWP_NOMOVE </FONT>|<FONT 
face="Times New Roman">SWP_NOZORDER );</FONT></FONT> </P>
<P><A name=tip21></A><B><FONT size=+2><FONT 
face="Times New Roman">21</FONT><FONT 
face=黑体>、如何单击除了窗口标题栏以外的区域使窗口移动</FONT></FONT></B> </P>
<P><FONT size=+0>当窗口需要确定鼠标位置时<FONT 
face="Times New Roman">Windows</FONT>向窗口发送<FONT 
face="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>表明鼠标在<FONT 
face="Times New Roman">Windows</FONT>的标题栏中。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>UINT CSampleDialog : : OnNcHitTest 
(Cpoint point )</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>UINT nHitTest =Cdialog: : OnNcHitTest 
(point );</FONT> </P>
<P><FONT face="Times New Roman" size=+0>return (nHitTest = =HTCLIENT)? HTCAPTION 
: nHitTest ;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT size=+0>上述技术有两点不利之处, 其一是在窗口的客户区域双击时, 窗口将极大;</FONT> </P>
<P><FONT size=+0>其二, 它不适合包含几个视窗的主框窗口。还有一种方法,当用户按下鼠标左键</FONT> </P>
<P><FONT size=+0>使主框窗口认为鼠标在其窗口标题上,使用<FONT 
face="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>信息和一个单击测试<FONT 
face="Times New Roman">HTCAPTION</FONT>。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>void CSampleView : : OnLButtonDown (UINT 
nFlags , Cpoint point )</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CView : : OnLButtonDow (nFlags , pont 
);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Fool frame window into thinking somene 
clicked on</FONT> </P>
<P><FONT face="Times New Roman" size=+0>its caption bar .</FONT> </P>
<P><FONT size=+0><FONT face="Times New Roman">GetParentFrame ( ) </FONT>—<FONT 

⌨️ 快捷键说明

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