打印

C++高手请出手一下

[复制链接]
1376|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
将军令|  楼主 | 2007-9-14 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C++, ST, se, dc, COM
CDC修改窗口背景出问题

一个通讯程序的界面,用VC++,这样写
是想实现:如果通讯正常,某个CEDIT的背景是绿色,如果通讯异常,背景为红色
现在这个程序跑是能跑,有一个麻烦,如果这个窗口前面叠加了一窗口,关闭这个叠加的窗口後,原先有颜色的地方都是白色。但是文字还在

这个部分要怎么改呀?

    CDC *dc=this->edit_communication_status.GetDC();
    dc->SetTextColor(SCS_BLACK);
    CString str,s2;
    s2="                                                                                               ";
    switch(scs_status)
        {case const_comm_timeout_error:
                str.Format("通讯超时,重试次数=%d",scs_sub_param);
                dc->SetBkColor(SCS_RED);
                break;
        case const_comm_ok:
                str.Format("通讯正常");
                dc->SetBkColor(SCS_GREEN);
                s2+="                       ";
                break;
        case const_comm_packge_format_error:
                str.Format("接收的数据包编码错误,错误=%d",this->scs_sub_param);
                char error[100];
                this->communcation_protocol_stack.explain_value_error_type_of_packge_format(&error[0]);
                str+=error;
                dc->SetBkColor(SCS_YELLOW);
                break;
        case const_comm_undefine_error:
                str.Format("未知通讯错误,参数=%d",scs_sub_param);
                dc->SetBkColor(SCS_BLUE);
                break;
        }
        //this->edit_communication_status.SetWindowText(str);
        str+=s2;
        dc->TextOut(0,0,str); 
 

相关帖子

沙发
3.3v| | 2007-9-14 17:07 | 只看该作者

跟MFC那边的ID检查一下

跟MFC那边的对应ID检查一下。

使用特权

评论回复
板凳
平常人| | 2007-9-14 22:42 | 只看该作者

所有东西都要在WM_PAINT中重画

系统每次在一个窗口被激活是要发出WM_PAINT信号。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

937

帖子

1

粉丝