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

📄 vctip6.html

📁 一些关于vc编程技巧的文章
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<p><font SIZE="+0">…</font> </p><p><font SIZE="+0" FACE="Times New Roman">} ;</font> </p><p><font SIZE="+0">其次,在类的构造函数中,初始化数据中。</font> </p><p><font SIZE="+0" FACE="Times New Roman">CMyListBox : : CMyListBox ()</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Initialize data members .</font> </p><p><font SIZE="+0" FACE="Times New Roman">m_clrFore =RGB (255 , 255 , 0) ; // yellow text</font> </p><p><font SIZE="+0" FACE="Times New Roman">m_clrBack=RGB (0 , 0 , 255) ; // blue background</font> </p><p><font SIZE="+0" FACE="Times New Roman">m_brush . CreateSolidBrush (m _clrBack );</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0">最后,使用<font FACE="Times New Roman">ClassWizard</font>处理反射的<fontFACE="Times New Roman">WM_CTLCOLOR(=WM_CTLCOLOR)</font>消息并指定新的绘画属性。</font> </p><p><font SIZE="+0" FACE="Times New Roman">HBRUSH CMyListBox : : CtlColor (CDC* pDC, UINT nCtlColor )</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">pDC</font>—<font FACE="Times New Roman">&gt;SetTextColor (m_clrFore);</font></font> </p><p><font SIZE="+0"><font FACE="Times New Roman">pDC</font>—<font FACE="Times New Roman">&gt;SetBkColor (m_clrBack);</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">return (HBRUSH) m_brush.GetSafeHandle ()</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0">现在,控件可以自己决定如何绘画,与父窗口无关。</font> </p><p><a NAME="tip45"></a><b><font SIZE="+2"><font FACE="Times New Roman">45</font><fontFACE="黑体">、当向列表框中添加多个项时如何防止闪烁</font></font></b> </p><p><font SIZE="+0">调用<font FACE="Times New Roman">CWnd::SetRedraw </font>清除重画标志可以禁止<fontFACE="Times New Roman">CListBox</font>(或者窗口)重画。当向列表框添加几个项时,用户可以清除重画标志,然后添加项,最后恢复重画标志。为确保重画列表框的新项,调用<fontFACE="Times New Roman">SetRedraw (TRUE) </font>之后调用<font FACE="Times New Roman">CWnd::Invalidate</font>。</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Disable redrawing.</font> </p><p><font SIZE="+0" FACE="Times New Roman">pListBox-&gt;SetRedraw (FALSE);</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Fill in the list box gere</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Enable drwing and make sure list box is redrawn.</font> </p><p><font SIZE="+0" FACE="Times New Roman">pListBox-&gt;SetRedraw (TRUE);</font> </p><p><font SIZE="+0" FACE="Times New Roman">pListBox-&gt;Invalidate ();</font> </p><p><a NAME="tip46"></a><b><font SIZE="+2"><font FACE="Times New Roman">46</font><fontFACE="黑体">、如何向编辑控件中添加文本</font></font></b> </p><p><font SIZE="+0">由于没有<font FACE="Times New Roman">CEdit:: AppendText</font>函数,用户只好自己做此项工作。调用<fontFACE="Times New Roman">CEdit:: SetSel</font>移动到编辑控件末尾,然后调用<fontFACE="Times New Roman">CEdit:: ReplaceSel</font>添加文本。下例是<fontFACE="Times New Roman">AppendText </font>的一种实现方法:</font> </p><p><font SIZE="+0" FACE="Times New Roman">void CMyEdit:: AppendText (LPCSTR pText)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">int nLen=GetWindowTextLength ();</font> </p><p><font SIZE="+0" FACE="Times New Roman">SetFocus ();</font> </p><p><font SIZE="+0" FACE="Times New Roman">SetSel (nLen, nLen);</font> </p><p><font SIZE="+0" FACE="Times New Roman">ReplaceSel (pText);</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><a NAME="tip47"></a><b><font SIZE="+2"><font FACE="Times New Roman">47</font><fontFACE="黑体">、如何访问预定义的</font><font FACE="Times New Roman">GDI</font><fontFACE="黑体">对象</font></font></b> </p><p><font SIZE="+0">可以通过调用<font FACE="Times New Roman">CDC:: SlectStockObject</font>使用<fontFACE="Times New Roman">Windows</font>的几个预定义的对象,诸如刷子、笔以及字体。下例使用了<fontFACE="Times New Roman">Windows</font>预定义的笔和刷子<font FACE="Times New Roman">GDI</font>对象在视窗中画一个椭圆。</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Draw ellipse using stock black pen and gray brush.</font> </p><p><font SIZE="+0" FACE="Times New Roman">void CSampleView:: OnDraw (CDC* pDC)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Determine size of view.</font> </p><p><font SIZE="+0" FACE="Times New Roman">CRect rcView;</font> </p><p><font SIZE="+0" FACE="Times New Roman">GetClientRect (rcView);</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Use stock black pen and stock gray brush to draw ellipse.</font> </p><p><font SIZE="+0" FACE="Times New Roman">pDC-&gt;SelectStockObject (BLACK_PEN);</font> </p><p><font SIZE="+0" FACE="Times New Roman">pDC-&gt;SelectStockObject (GRAY_BRUSH)</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Draw the ellipse.</font> </p><p><font SIZE="+0" FACE="Times New Roman">pDC-&gt;Ellipse (reView);</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0">也可以调用新的<font FACE="Times New Roman">SDK</font>函数<fontFACE="Times New Roman">GetSysColorBrush</font>获取一个系统颜色刷子,下例用背景色在视窗中画一个椭圆:</font> </p><p><font SIZE="+0" FACE="Times New Roman">void CsampleView:: OnDraw (CDC* pDC)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Determine size of view.</font> </p><p><font SIZE="+0" FACE="Times New Roman">CRect rcView;</font> </p><p><font SIZE="+0" FACE="Times New Roman">GetClientRect (rcView);</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Use background color for tooltips brush.</font> </p><p><font SIZE="+0" FACE="Times New Roman">CBrush * pOrgBrush=pDC-&gt;SelectObject (</font> </p><p><font SIZE="+0" FACE="Times New Roman">CBrush::FromHandle (::GetSysColorBrush (COLOR_INFOBK)));</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Draw the ellipse.</font> </p><p><font SIZE="+0" FACE="Times New Roman">pDC-&gt;Ellipse (rcView);</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Restore original brush.</font> </p><p><font SIZE="+0" FACE="Times New Roman">pDC-&gt;SelectObject (pOrgBrush);</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><a NAME="tip48"></a><b><font SIZE="+2"><font FACE="Times New Roman">48</font><fontFACE="黑体">、如何获取</font><font FACE="Times New Roman">GDI</font><fontFACE="黑体">对象的属性信息</font></font></b> </p><p><font SIZE="+0">可以调用<font FACE="Times New Roman">GDIObject:: GetObject</font>。这个函数将指定图表设备的消息写入到缓冲区。下例创建了几个有用的辅助函数。</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Determine if font is bold.</font> </p><p><font SIZE="+0" FACE="Times New Roman">BOOL IsFontBold (const CFont&amp;font)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">LOGFONT stFont;</font> </p><p><font SIZE="+0" FACE="Times New Roman">font.GetObject (sizeof (LOGFONT), &amp;stFont);</font> </p><p><font SIZE="+0" FACE="Times New Roman">return (stFont.lfBold)? TRUE: FALSE;</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Return the size of a bitmap.</font> </p><p><font SIZE="+0" FACE="Times New Roman">CSize GetBitmapSize (const CBitmap&amp;bitmap)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">BITMAP stBitmap;</font> </p><p><font SIZE="+0" FACE="Times New Roman">bitmap.GetObject (sizeof (BITMAP), &amp;stBitmap);</font> </p><p><font SIZE="+0" FACE="Times New Roman">return CSize (stBitmap.bmWidth, stBitmap. bmHeight);</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</font> </p><p><font SIZE="+0" FACE="Times New Roman">//Create a pen with the same color as a brush.</font> </p><p><font SIZE="+0" FACE="Times New Roman">BOOL CreatePenFromBrush (Cpen&amp;pen, cost Cbrush&amp;brush)</font> </p><p><font SIZE="+0" FACE="Times New Roman">{</font> </p><p><font SIZE="+0" FACE="Times New Roman">LOGBRUSH stBrush;</font> </p><p><font SIZE="+0" FACE="Times New Roman">brush.Getobject (sizeof (LOGBRUSH), &amp;stBrush);</font> </p><p><font SIZE="+0" FACE="Times New Roman">return pen. Createpen (PS_SOLID, 0, stBrush.ibColor);</font> </p><p><font SIZE="+0" FACE="Times New Roman">}</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 + -