应用中用到512个静态文本控件,用来显示不同的信息;
1.开始我在对话资源编辑器中静态添加这些控件,所以静态文本字体和对话字体相同(宋体),但发现一个问题:一个对话模板最多只能添加255个控件,不知道我说的是否正确?
2.动态添加:
(1).从CStatic派生一个透明背景的静态文本CTransparentStatic类;
HBRUSH CTransparentStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
(2).在对话类中添加成员变量CTransparentStatic m_textarray[512];
(3).对话的OnInitDialog()中:
for(int i=0;i<512;i++)
{
char tempstr[8];
sprintf(tempstr,"%s%03d","景点",i+1);
m_textarray[i].Create(tempstr,SS_CENTER|WS_VISIBLE,CRect(0,0,20,20),this);}
有两个问题:
1.文本显示出来后,字体和对话字体(宋体)不同,好像是系统字体;我想让它和对话字体一致?
2.静态文本Create()时,CRect怎样适应文本大小,我现在是随意给出CRect(0,0,20,20)?
1.开始我在对话资源编辑器中静态添加这些控件,所以静态文本字体和对话字体相同(宋体),但发现一个问题:一个对话模板最多只能添加255个控件,不知道我说的是否正确?
2.动态添加:
(1).从CStatic派生一个透明背景的静态文本CTransparentStatic类;
HBRUSH CTransparentStatic::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
(2).在对话类中添加成员变量CTransparentStatic m_textarray[512];
(3).对话的OnInitDialog()中:
for(int i=0;i<512;i++)
{
char tempstr[8];
sprintf(tempstr,"%s%03d","景点",i+1);
m_textarray[i].Create(tempstr,SS_CENTER|WS_VISIBLE,CRect(0,0,20,20),this);}
有两个问题:
1.文本显示出来后,字体和对话字体(宋体)不同,好像是系统字体;我想让它和对话字体一致?
2.静态文本Create()时,CRect怎样适应文本大小,我现在是随意给出CRect(0,0,20,20)?
那么在
m_textarray[i].Create(tempstr,SS_CENTER|WS_VISIBLE,CRect(0,0,20,20),this);
之后m_textarray[i].SetFont(dlg.GetFont());
如果在DLG的初始化中则可
m_textarray[i].SetFont(GetFont());
第一个问题已明白,第二个?