我在窗体内放了一个按钮和一个Statics text。
然后在按钮的单击事件里面写了:
GetDlgItem(IDC_STATICS)->GetDC->SetBkColor(RFB(0,255,0);
GetDlgItem(IDC_STATICS)->GetDC->SetTextColor(RFB(0,255,0);
GetDlgItem(IDC_STATICS)->SetWindowText("haha");运行后,没有任何颜色效果,只是文字变了。
若第三句改成:GetDlgItem(IDC_STATICS)->GetDC->TextOut(........);
又需要输入x,y坐标。。不知如何是好。。所以,请问在两种情况下,分别应该怎么办。谢谢了~。
然后在按钮的单击事件里面写了:
GetDlgItem(IDC_STATICS)->GetDC->SetBkColor(RFB(0,255,0);
GetDlgItem(IDC_STATICS)->GetDC->SetTextColor(RFB(0,255,0);
GetDlgItem(IDC_STATICS)->SetWindowText("haha");运行后,没有任何颜色效果,只是文字变了。
若第三句改成:GetDlgItem(IDC_STATICS)->GetDC->TextOut(........);
又需要输入x,y坐标。。不知如何是好。。所以,请问在两种情况下,分别应该怎么办。谢谢了~。
http://www.codeguru.com/Cpp/controls/staticctrl/article.php/c2909/
如果不那么做呢。。有别的办法吗?。。 pomelowu(羽战士) GetDC后面少了个(),编译可以通过的。。
能提供简单清晰的方法吗?。。谢谢了。
HBRUSH CHelpInfoView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); m_clrBkgnd = RGB( 58, 110, 165 );
m_clrBkgnd = RGB(255, 255, 255);
m_brBkgnd.CreateSolidBrush(m_clrBkgnd);
// TODO: Change any attributes of the DC here
switch(nCtlColor)
{
/* CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表框
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滑动条
CTLCOLOR_STATIC 静态文本框、矩形等。
*/
case CTLCOLOR_STATIC://在此加入你想要改变背景色的控件消息
pDC->SetTextColor(m_clrText);
pDC->SetBkColor(m_clrBkgnd);
hbr = m_brBkgnd;
break; default:
break;
} // TODO: Return a different brush if the default is not desired
return hbr;
}
GetDlgItem(IDC_STATICS)->GetDC->SetTextColor(RFB(0,255,0);改成:
GetDlgItem(IDC_STATICS)->GetDC()->SetTextColor(RGB(0,255,0);然后Invalidate();
你要为每一个静态文本框设定一个ID
改的静态文本上,怎么把所有的静态文本都改了啊?问题到底出在哪儿?
if(pStatic == pWnd) //如果是你想修改颜色的Static , 则进入 . . .
{
pDC->SetTextColor(m_clrText);
pDC->SetBkColor(m_clrBkgnd);
hbr = m_brBkgnd;
}
break;这里要注意的是 , 你的这个ID一定要是唯一的 . . . .另一种方法: 利用DrawText来绘制文本 . .
CWnd* pWnd = GetDlgItem(IDC_STATIC1);
CDC* pDC = pWnd->GetDC() ; pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(255,255,255));
CRect rt ;
pWnd->GetClientRect(rt);
pDC->DrawText("aaa",rt,0); DrawText能够在指定矩形范围内绘制文本 ,
你可以设置文本区域为这个绘制区域 , 然后可以设置文本对齐方式 , 来绘制文本 . . 这样 , 你可以不用考虑textout里那样的x,y坐标值 , 你只要指定一种对齐方式 , (左对齐,
右对齐 , 中间 等等) , 它就会自动绘制很好的文本 . . .
你说的好全面啊。。呵呵。。谢谢你了。。
还有没有别的办法?。。
大家聊聊啊~~。。