收录日期:2018/09/20 15:45:55 时间:2016/05/18 03:13:53 标签:基础类
以下的代码来自于用ATL写的一个控件,不能按预料的运行:

1。

LRESULT Cs24::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
card1.Attach(GetDlgItem(IDC_CARDSCTRL1));
card2.Attach(GetDlgItem(IDC_CARDSCTRL2));
card3.Attach(GetDlgItem(IDC_CARDSCTRL3));
card4.Attach(GetDlgItem(IDC_CARDSCTRL4));
card1.Setbackground(TRUE);
card2.Setbackground(TRUE);
card3.Setbackground(TRUE);
card4.Setbackground(TRUE);
return TRUE;
}
card1-card4继承自一个用MFC写的控件类(整个控件是扑克牌),类由VC自动生成,background是控件的一个属性,作用是把牌翻过来。IDC_CARDSCTRL1-IDC_CARDSCTRL4是插入到对话框中的控件的ID。
运行以后,发现牌没有翻过来。

2。

LRESULT Cs24::OnCtlColorDlg(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
  
return (LRESULT)(HBRUSH)&brush;
}

LRESULT Cs24::OnCtlColorBtn(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
    CDC cdc;
cdc.Attach((HDC)wParam);
cdc.SetTextColor(RGB(255,0,0));
cdc.SetBkMode(TRANSPARENT);
return (LRESULT)(HBRUSH)&brush;
}

LRESULT Cs24::OnCtlColorStatic(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
    CDC cdc;
cdc.Attach((HDC)wParam);
cdc.SetTextColor(RGB(255,0,0));
return (LRESULT)(HBRUSH)&brush;
}

LRESULT Cs24::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
brush.CreateSolidBrush(RGB(0,255,0));
return 0;
}
brush是一个CBrush,代码试图把对话框、按纽和STATIC的背景改为绿色,字为红色。运行以后发现,背景是灰色,按纽和STATIC(包括它们的文字)都看不见了,估计(包括字)都变成灰色了。
1.刷新了吗?Invalidate一下看看
up
Invalidate没有用的
up
这个人信誉分太低,我们给他找出了原因他也不会给分的!
如果可以把你的代码发过来看看,不信还有解决不了的问题。
main19@163.net
这个控件在调试的时候怎么样
第二个问题已经解决,原因是Create消息并不会产生,还有语法上的一点错误,第一个问题怎么解决?
关于我的信誉分:去年发了好多帖子,没有得到正确答案,所以帖子没有结,被强行扣除了。
调试的时候很奇怪,四张牌两张翻着,两张亮着。
值得关注一下.
求救
!!
??
:-)