描述:
各位大虾:
小弟初学VC,想用MFC作一个ACTIVE X控件。应用了MFC提供的颜色,字体属性和一个自定义的文件对齐属性。
同时在ACTIVE X中子类化的CEDIT控件。
现在的情形是,1。当在属性面中改变字体时,MFC自动提供了实现。但改变属性中的颜色时(Forecolor,backcolor)时,在关闭属性对话框后,不能将设定的颜色应用到控件的内容中。
2。同上,也不能应用文本对齐设置值到现有控件中。
大概的代码如下:
//CTESTCTL.H
...
int m_tetxAligned;//0,左对齐,1,居中,2,右对齐
....
//CTESTCTL.app
CTestCtl:CTestCtl()
{
....
m_textAlign=0;
....
}
....
CTestCtl:OnTextAlignChanged()
{
CWnd* pwnd=this;
if (m_textAlign==0)
{
if (pWnd->GetStyle() & ES_CENTER)
pWnd->Modifystyle(ES_CENTER,ES_LEFT,0);
if(pWnd->GetStyle() & ES_RIGHT)
pWnd->ModifyStyle(Es_RIGHT,es_LEFT,0)
}
else if (m_textalign==1)//设置居中对齐
{
....
}
else //设置右对齐
{
.....
}
InvalidateControl();
SetModified(TRUE);
}
但是就是控中的显示。
是否我的方向有问题,应该中OnDraw()中作这么事情,但是却出现另一种现象
代码如下:
CTestCtl:OnDraw(......)
{
DoSubClassPaint();
CRect rect;
rcBounds.CopyRect(&rect);
if (m_textAlign==0)
pdc->DrawText(InternalGettext(),&rect,DT_LEFT,..)
else if (m_textAlign==1)
pdc->DrawText(InternalGettext(),&rect,DT_CENTER,..)
else
pdc->DrawText(InternalGettext(),&rect,DT_RIGHT,..)
....
}
同时对OnTextAlignChanged()作相庆修改。
但却出现了在控件中出现两处字串,一串是作为EDIT中的输 入,另一个则为OnDraw(...)的输出。
以上问题,烦请解答,不胜感激。
.....
}