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

📄 vctip3.html

📁 一些关于vc编程技巧的文章
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<p><font SIZE="+0">该技术也适用于对话框和基于对的应用程序,只是不必调用<fontFACE="Times New Roman">CWnd : : GetParentFrame </font>。</font> </p><p><font SIZE="+0" FACE="Times New Roman">void CSampleDialog : : 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">Cdialog : : OnLButtonDow (nFlags, goint );</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Fool dialog into thinking simeone clicked on its caption bar .</font> </p><p><font SIZE="+0" FACE="Times New Roman">PostMessage (WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARM (point.x , point. y ) )</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><a NAME="tip22"></a><b><font SIZE="+2"><font FACE="Times New Roman">22</font><fontFACE="黑体">、如何改变视窗的背景颜色</font></font></b> </p><p><font SIZE="+0"><font FACE="Times New Roman">Windows</font>向窗口发送一个<fontFACE="Times New Roman">WM_ERASEBKGND</font>消息通知该窗口擦除背景,可以使用</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">ClassWizard</font>重载该消息的缺省处理程序来擦除背景(实际是画),并返回<fontFACE="Times New Roman">TRUE</font>以</font> </p><p><font SIZE="+0">防止<font FACE="Times New Roman">Windows</font>擦除窗口。</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Paint area that needs to be erased.</font> </p><p><font SIZE="+0" FACE="Times New Roman">BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">// Create a pruple brush.</font> </p><p><font SIZE="+0" FACE="Times New Roman">CBrush Brush (RGB (128 , 0 , 128) );</font> </p><p><font SIZE="+0" FACE="Times New Roman">// Select the brush into the device context .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">CBrush* pOldBrush = pDC</font>—<fontFACE="Times New Roman">&gt;SelcetObject (&amp;brush);</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">// Get the area that needs to be erased .</font> </p><p><font SIZE="+0" FACE="Times New Roman">CRect reClip ;</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">pDC</font>—<font FACE="Times New Roman">&gt;GetCilpBox (&amp;rcClip);</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">//Paint the area.</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">pDC</font>—<font FACE="Times New Roman">&gt; PatBlt (rcClip.left , rcClip.top ,</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">rcClip.Width ( ) , rcClip.Height ( ) , PATCOPY );</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Unselect brush out of device context .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">pDC</font>—<font FACE="Times New Roman">&gt;SelectObject (pOldBrush );</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">// Return nonzero to half fruther processing .</font> </p><p><font SIZE="+0" FACE="Times New Roman">return TRUE;</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><a NAME="tip23"></a><b><font SIZE="+2"><font FACE="Times New Roman">23</font><fontFACE="黑体">、如何改变窗口标题</font></font></b> </p><p><font SIZE="+0">调用<font FACE="Times New Roman">CWnd : : SetWindowText</font>可以改变任何窗口(包括控件)的标题。</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Set title for application's main frame window .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">AfxGetMainWnd ( ) </font>—<fontFACE="Times New Roman">&gt; SetWindowText (_T(&quot;Application title&quot;) );</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">//Set title for View's MDI child frame window .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">GetParentFrame ( ) </font>—<fontFACE="Times New Roman">&gt; SetWindowText (&quot;_T (&quot;MDI Child Frame new title&quot;) );</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">//Set title for dialog's push button control.</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">GetDigitem (IDC_BUTTON) </font>—<fontFACE="Times New Roman">&gt; SetWindowText (_T (&quot;Button new title &quot;) );</font></font> </p><p><font SIZE="+0">如果需要经常修改窗口的标题(注:控件也是窗口),应该考虑使用半文档化</font> </p><p><font SIZE="+0">的函数<font FACE="Times New Roman">AfxSetWindowText</font>。该函数在<fontFACE="Times New Roman">AFXPRIV.H</font>中说明,在<font FACE="Times New Roman">WINUTIL.CPP</font>中实现,在</font> </p><p><font SIZE="+0">联机帮助中找不到它,它在<font FACE="Times New Roman">AFXPRIV.H</font>中半文档化, 在以后发行的<font FACE="Times New Roman">MFC</font>中将文档化。</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">AfxSetWindowText</font>的实现如下:</font> </p><p><font SIZE="+0" FACE="Times New Roman">voik AFXAPI AfxSetWindowText (HWND hWndCtrl , LPCTSTR IpszNew )</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">itn nNewLen= Istrlen (Ipaznew);</font> </p><p><font SIZE="+0" FACE="Times New Roman">TCHAR szOld [256];</font> </p><p><font SIZE="+0" FACE="Times New Roman">//fast check to see if text really changes (reduces flash in the controls )</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">if (nNewLen &gt;_contof (szOld) </font>||</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">: : GetWindowText (hWndCrtl , szOld , _countof (szOld) !=nNewLen </font>||</font> </p><p><font SIZE="+0" FACE="Times New Roman">Istrcmp (szOld , IpszNew )! = 0</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">//change it</font> </p><p><font SIZE="+0" FACE="Times New Roman">: : SetWindowText (hWndCtrl , IpszNew );</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><a NAME="tip24"></a><b><font SIZE="+2"><font FACE="Times New Roman">24</font><fontFACE="黑体">、如何防止主框窗口在其说明中显示活动的文档名</font></font></b> </p><p><font SIZE="+0">创建主框窗口和<font FACE="Times New Roman">MDI</font>子窗口进通常具有<fontFACE="Times New Roman">FWS_ADDTOTITLE</font>风格位, 如果不希望在</font> </p><p><font SIZE="+0">说明中自动添加文档名, 必须禁止该风格位, 可以使用<font FACE="Times New Roman">ClassWizard</font>重置</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">CWnd: : PreCreateWindow</font>并关闭<fontFACE="Times New Roman">FWS_ADDTOTITLE</font>风格。</font> </p><p><font SIZE="+0" FACE="Times New Roman">BOOL CMainFrame : : PreCreateWindow (CREATESTRUCT&amp;cs)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Turn off FWS_ADDTOTITLE in main frame .</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">cs.styel &amp; = ~FWS_ADDTOTITLE ;</font> </font> </p><p><font SIZE="+0" FACE="Times New Roman">return CMDIFrameWnd : : PreCreateWindow (cs );</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0">关闭<font FACE="Times New Roman">MDI</font>子窗口的<fontFACE="Times New Roman">FWS _ADDTOTITLE</font>风格将创建一个具有空标题的窗口,可以调</font> </p><p><font SIZE="+0">用<font FACE="Times New Roman">CWnd: : SetWindowText</font>来设置标题。记住自己设置标题时要遵循接口风格指南。</font> </p><hr><p>&nbsp;<a HREF="skill.htm">返回上页</a>&nbsp;&nbsp;&nbsp;</p></body></html>

⌨️ 快捷键说明

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