📄 subject_26249.htm
字号:
<p>
序号:26249 发表者:萧马 发表日期:2002-12-30 14:36:16
<br>主题:请看图:
<br>内容:如图,如何让static控件背景色 为透明,也就是显示对话框的背景色<BR><BR>还有就是,怎么设置static控件字体大小?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2002-12-30 14:58:36
<br>内容:<BR> 从CStatic类中继承一个新类,映射WM_PAINT消息.其中bitmap为对话框的背景图片. <BR> <BR> void CMyStatic::OnPaint() <BR> { <BR> CPaintDC dc(this); // device context for painting <BR> CRect rect; <BR> GetClientRect(&rect); <BR> <BR> CString m_strStatic; <BR> CWnd* wndStatic = dc.GetWindow(); <BR> wndStatic->GetWindowText(m_strStatic); <BR> <BR> CBitmap bitmap; <BR> bitmap.LoadBitmap(IDB_BACK); <BR> CDC dcmem; <BR> dcmem.CreateCompatibleDC(&dc); <BR> CBitmap* poldbitmap = dcmem.SelectObject(&bitmap); <BR> dc.BitBlt(0,0,rect.Width(),rect.Height(),&dcmem,0,0,SRCCOPY); <BR> dcmem.SelectObject(poldbitmap); <BR> <BR> dc.SetBkMode(TRANSPARENT); <BR> dc.TextOut(2,2,m_strStatic); <BR> // Do not call CStatic::OnPaint() for painting messages <BR> } <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:晚风也渡 回复日期:2002-12-30 15:01:48
<br>内容:重载对话框的该函数<BR>HBRUSH CDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR> HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<BR> hbr=CreateSolidBrush((LONG)GetStockObject(BLACK_BRUSH));<BR> switch(nCtlColor)<BR> {<BR> case CTLCOLOR_DLG:<BR> return hbr;<BR> case CTLCOLOR_STATIC:<BR> if (pWnd->GetDlgCtrlID() == IDC_STATIC)<BR> { <BR> pDC->SetBkMode(TRANSPARENT);<BR> }<BR> }<BR> return hbr;<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:萧马 回复日期:2002-12-30 15:38:49
<br>内容:晚风:按照您的方法:得到的结果如图:<BR><BR>bird:定义了一个继承自CStatic然后怎么办?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:萧马 回复日期:2002-12-30 15:41:50
<br>内容:是不是每个静态控件都要定义一个该类变量?let's try!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:我的网名 回复日期:2002-12-30 16:20:42
<br>内容:http://soft.freshsky.net/vc/contents.asp?item=静态控制<BR><BR>名称:Extended Use of Cstatic Class - Clabel [下载源代码及示范工程] <BR>作者:norm almond<BR>E-mail:nalmond@hotmail.com<BR>说明:这是一个扩展的静态文本控件,允许你改变文字的颜色、字体,背景和边界属性。挺不错的。 <BR><BR>就OK了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bb 回复日期:2002-12-30 16:47:17
<br>内容:class CMyStatic : public CStatic<BR>{<BR>public:<BR> CMyStatic();<BR> // ClassWizard generated virtual function overrides<BR> //{{AFX_VIRTUAL(CMyStatic)<BR> protected:<BR> virtual void PreSubclassWindow();<BR> //}}AFX_VIRTUAL<BR>public:<BR> virtual ~CMyStatic();<BR>protected:<BR> //{{AFX_MSG(CMyStatic)<BR> afx_msg void OnPaint();<BR> //}}AFX_MSG<BR> DECLARE_MESSAGE_MAP()<BR>};<BR><BR><BR>void CMyStatic::PreSubclassWindow() <BR>{<BR> ModifyStyle(0, SS_OWNERDRAW);<BR> CStatic::PreSubclassWindow();<BR>}<BR>#define OFS_X 10 // distance from left/right side to beginning/end of text<BR>void CMyStatic::OnPaint() <BR>{<BR>CRect rc;<BR>CPoint ptStart, ptEnd;<BR>CSize seText;<BR>CString sText, sTemp;<BR>DWORD dwStyle, dwExStyle;<BR>CPaintDC dc(this); // device context for painting<BR> <BR>GetWindowRect(&rc);<BR>ScreenToClient(&rc);<BR><BR>// determine text length<BR>GetWindowText(sText);<BR>seText = dc.GetTextExtent(sText);<BR><BR>// distance from window top to group rect<BR>// calc rect and start/end points<BR>dwStyle = GetStyle();<BR>dwExStyle = GetExStyle();<BR>// handle text alignment (Caution: SS_CENTER == SS_LEFT|SS_RIGHT!!!)<BR>ptStart.y = ptEnd.y = rc.top ;<BR>if ((dwStyle & SS_CENTER) == SS_RIGHT) // right aligned<BR>{<BR> ptEnd.x = rc.right - OFS_X;<BR> ptStart.x = ptEnd.x - seText.cx;<BR>}<BR>else if ((!(dwStyle & SS_CENTER)) || ((dwStyle & SS_CENTER) == SS_LEFT))// left aligned / default<BR>{<BR> ptStart.x = rc.left + OFS_X;<BR> ptEnd.x = ptStart.x + seText.cx;<BR>}<BR>else if ((dwStyle & SS_CENTER) == SS_CENTER) // text centered<BR>{<BR> ptStart.x = (rc.Width() - seText.cx) / 2;<BR> ptEnd.x = ptStart.x + seText.cx;<BR>} <BR>// draw text (if any)<BR>if (!sText.IsEmpty() )<BR>{<BR> if (!IsWindowEnabled())<BR> {<BR> dc.DrawState(ptStart, seText, sText, DSS_DISABLED, TRUE, 0, (HBRUSH)NULL);<BR> }<BR> else<BR> {<BR> dc.SetBkMode(TRANSPARENT);<BR> dc.DrawText(sText, CRect(ptStart, ptEnd), DT_VCENTER|DT_LEFT|DT_SINGLELINE|DT_NOCLIP);<BR> }<BR>}<BR>}<BR><BR>2002-12-30 17:18:38
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -