注册 登录
编程论坛 C++教室

动态创建的Edit控件相关操作问题

鸿蒙之灵 发布于 2020-07-09 13:04, 1602 次点击
有一个CEdit edit;的变量申明,然后在View.cpp中对其进行了动态创建,使用的是

edit.Create(WS_CHILD|WS_VISIBLE,CRect(ScreenPoint.x+253+100,ScreenPoint.y+305,ScreenPoint.x+645+100,ScreenPoint.y+325),this,123);


调用时用


GZPDedit.ShowWindow(SW_SHOW);


现有疑问,我要如何做,才可以实现对其背景颜色和字体颜色的改变,该问题比较急,希望各位大佬提供点帮助
1 回复
#2
鸿蒙之灵2020-07-09 14:54
已经解决了,在此对大家分享一下解决方法

首先从我create那里可以看到,我动态创建的edit控件,动态分配的ID值为 123

其次,在pView的cpp文件中增加消息  OnCtlColor 进行处理,重新设置其字体颜色,具体如下:

.h文件中增加消息函数声明(也可以利用自动添加消息机制的面板操作进行,我这里是手敲)


public:
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);


.cpp函数中
程序代码:


BEGIN_MESSAGE_MAP(CMonitorView, CScrollView)
    ON_WM_CTLCOLOR()   //增加消息
END_MESSAGE_MAP()

HBRUSH CmmmView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CScrollView::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO:  在此更改 DC 的任何属性
    if(pWnd->GetDlgCtrlID() == 123)
    {
        pDC->SetBkMode(TRANSPARENT);
        pDC->SetTextColor(RGB(21,35,72));
        //return (HBRUSH)::GetStockObject(BLACK_BRUSH);
    }
    // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    return hbr;
}
1