让一个ComboBox的显示字符串以给定的颜色显示,怎么做?

本文介绍了一种在VC/MFC中实现自定义ComboBox的方法,该ComboBox可以设置不同的文本颜色、背景颜色和编辑框颜色。通过继承CComboBox并重写部分方法,实现了ComboBox中项目的颜色定制功能。
部署运行你感兴趣的模型镜像

rt
问题点数: 20、 回复次数: 5

//   SuperComboBox.cpp   :   implementation   file  
  //  
   
  #include   "stdafx.h"  
  #include   "cfileinfo.h"  
  #include   "SuperComboBox.h"  
   
  #ifdef   _DEBUG  
  #define   new   DEBUG_NEW  
  #undef   THIS_FILE  
  static   char   THIS_FILE[]   =   __FILE__;  
  #endif  
   
  /////////////////////////////////////////////////////////////////////////////  
  //   CSuperComboBox  
   
  CSuperComboBox::CSuperComboBox()  
  {  
  m_TextColor   =   RGB(0,   0,   0);  
          m_BackColor   =   TRANS_BACK;  
  m_EditColor   =   RGB(255,   255,   255);  
  }  
   
  CSuperComboBox::~CSuperComboBox()  
  {  
  }  
   
   
  BEGIN_MESSAGE_MAP(CSuperComboBox,   CComboBox)  
  //{{AFX_MSG_MAP(CSuperComboBox)  
  ON_WM_DESTROY()  
  ON_WM_CTLCOLOR()  
  //}}AFX_MSG_MAP  
  END_MESSAGE_MAP()  
   
  /////////////////////////////////////////////////////////////////////////////  
  //   CSuperComboBox   message   handlers  
   
  void   CSuperComboBox::OnDestroy()    
  {  
  CComboBox::OnDestroy();  
  if   (   m_Edit.GetSafeHwnd()   !=   NULL   )  
            {  
                    m_Edit.UnsubclassWindow();  
            }  
  //   TODO:   Add   your   message   handler   code   here  
  }  
   
  HBRUSH   CSuperComboBox::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
  if   (   nCtlColor   ==   CTLCOLOR_EDIT   )  
            {  
                    if   (   m_Edit.GetSafeHwnd()   ==   NULL   )  
                    {  
                              m_Edit.SubclassWindow(   pWnd->GetSafeHwnd());  
      m_Edit.SetTextColor(m_TextColor);  
      m_Edit.SetEditColor(m_EditColor);  
      m_Edit.SetBackColor(m_BackColor);  
    }  
  }  
  else   if   (nCtlColor   ==   CTLCOLOR_LISTBOX)  
          {  
  //istBox   control  
    if   (m_List.GetSafeHwnd()   ==   NULL)  
  {  
  m_List.SubclassWindow(pWnd->GetSafeHwnd());  
  m_List.SetTextColor(m_TextColor);  
  m_List.SetEditColor(m_EditColor);  
  m_List.SetBackColor(m_BackColor);  
  }  
        }  
  return   CComboBox::OnCtlColor(   pDC,   pWnd,   nCtlColor   );    
  }  
   
 
Top

/*===========================================================================  
  ====                                                                                                                                           ====  
  ====         File   name                       :     EditTrans.h                                                               ====  
  ====         Creation   date               :     7/10/2001                                                                   ====  
  ====         Author(s)                       :     Dany   Cantin                                                               ====  
  ====                                                                                                                                           ====  
  ===========================================================================*/  
   
  #ifndef   EDITTRANS_H  
  #define   EDITTRANS_H  
   
  #if   _MSC_VER   >   1000  
  #pragma   once  
  #endif   //   _MSC_VER   >   1000  
   
   
  /////////////////////////////////////////////////////////////////////////////  
  //   CEditTrans   window  
   
  #define   TRANS_BACK   -1  
   
  class   CEditTrans   :   public   CEdit  
  {  
  //   Construction  
  public:  
  CEditTrans();  
   
  //   Attributes  
  private:  
          COLORREF   m_TextColor;  
          COLORREF   m_BackColor;  
  COLORREF   m_EditColor;  
          CBrush       m_Brush;  
  //   Operations  
  public:  
          void   SetTextColor(COLORREF   col)   {   m_TextColor   =   col;  
                                                                              UpdateCtrl();             }  
          void   SetBackColor(COLORREF   col)   {   m_BackColor   =   col;  
                                                                              UpdateCtrl();             }  
  void   SetEditColor(COLORREF   col)   {   m_EditColor   =   col;  
                                                                              UpdateCtrl();             }  
  private:  
          void   UpdateCtrl();  
   
  //   Overrides  
  //   ClassWizard   generated   virtual   function   overrides  
  //{{AFX_VIRTUAL(CEditTrans)  
  //}}AFX_VIRTUAL  
   
  //   Implementation  
  public:  
  virtual   ~CEditTrans();  
   
  //   Generated   message   map   functions  
  protected:  
  //{{AFX_MSG(CEditTrans)  
  afx_msg   HBRUSH   CtlColor(CDC*   pDC,   UINT   nCtlColor);  
  afx_msg   void   OnUpdate();  
  afx_msg   void   OnLButtonDown(UINT   nFlags,   CPoint   point);  
  afx_msg   void   OnKillfocus();  
  //}}AFX_MSG  
   
  DECLARE_MESSAGE_MAP()  
  };  
   
  #endif   //   EDITTRANS_H  
 
Top

A   ZA   A   ZA,   FIGHTING! 

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

void MainWindow::on_pushButton_2_clicked() { //清除数据 ui->lineEdit_2->clear(); ui->label_13->clear(); ui->label_18->clear(); ui->label_24->clear(); //重置变量 NumberOfCalls = 0; lastValue = 0.0f; // reductionAccumulator = 0.0f; // 累计减少量 QString DeviceID = ui->comboBox->currentText(); QString result = ui->lineEdit_7->text();// 60L 是否合格 updatastorage(DeviceID, result, 5) ; result = ui->lineEdit_2->text(); // 正压 是否合格 updatastorage(DeviceID, result, 1) ; result = ui->lineEdit_5->text(); // 负压 updatastorage(DeviceID, result, 2) ; result = ui->lineEdit_6->text(); // 1.2L updatastorage(DeviceID, result, 4) ; result = ui->lineEdit_16->text(); // 排气阀 updatastorage(DeviceID, result, 3) ; bool ok; lineEdit_18_Time = ui->lineEdit_18->text().toInt(&ok); if (!ok) return; EM2000Hstate = true;//启动EM2000H设备状态 //处理modbusclintc804 if (modbusClientC804 && modbusClientC804->state() == QModbusClient::ConnectedState) { if (Time2000H->isActive()) { Time2000H->stop(); } Time2000H->start(400); // 连接成功后,启动计时器 } // 写入线圈 plc的modbus链接 if (modbusMasterPLC && modbusMasterPLC->state() == QModbusClient::ConnectedState) { // writeCoils(false, 0x0012, 1); // // 定义操作序列 // QVector<std::tuple<quint16, bool, int>> coilOperations = { // {0x0014, false, 1}, // {0x0008, false, 2}, // {0x0016, false, 1}, // {0x0000, false, 1}, // {0x0016, true, 1} // }; // // 链式执行(间隔100ms) // int delay = 100; // for (const auto& [addr, state, num] : coilOperations) { // QTimer::singleShot(delay, this, [this, addr, state, num]{ // writeCoils(state, addr, num); // }); // delay += 100; // 每次增加延迟 // } writeCoils(false, 0x0000, 8); //延迟写入 QTimer::singleShot(100, this, [this]() { writeCoils(true, 0x0004, 2); // 执行第二次操作 }); QTimer::singleShot(100, this, [this]() { writeCoils(true, 0x0007, 1); // 执行第二次操作 }); // QTimer::singleShot(100, this, [this]() { // writeCoils(true, 0x0005, 1); //m5 // }); QTimer::singleShot(100, this, [this]() { writeCoils(true, 0x0001, 1); // 执行第二次操作 }); } }将这个数据按照comboBox显示并更新到第一行
最新发布
09-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值