3个简单的函数调用 实现ComboBox皮肤-CBitComboBox类

翻译来源:https://www.codeproject.com/Articles/6518/Skin-the-ComboBox-in-simple-function-calls

作者:Ashok Jaiswal


设置组合框的下拉列表中的组合框的皮肤。

示例图像 -  Skin_Combo_Box.jpg

介绍

这是一个简单的子类控件CComboBox,允许您将皮肤应用于组合框及其下拉框。使用的皮肤可以是像素宽(为了背景和角落),以保持控制光。

CComboBox覆盖

以下函数被覆盖(就像大多数子类控件一样)。这很容易理解。

virtual BOOL Create(LPCTSTR lpszClassName, 
    LPCTSTR lpszWindowName, DWORD dwStyle, 
    const RECT& rect, CWnd* pParentWnd, UINT nID, 
    CCreateContext* pContext = NULL);
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
afx_msg void OnPaint();
afx_msg void OnDestroy();
afx_msg LRESULT OnCtlColorListBox(WPARAM wParam, LPARAM lParam);

以下功能取自Code Project中的multicombobox项目(对不起,我忘记了作者和链接)。

afx_msg LRESULT OnCtlColorListBox(WPARAM wParam, LPARAM lParam);

如何使用

使用起来非常简单。在对话框中添加一个组合框,创建一个CComboBox类型的成员变量,将对象类型更改CBitComboBox为对话框头文件,然后在资源中添加位图,以使皮肤组合。

将头文件更改为如下所示:

包含BitComboBox标题:

#include "BitComboBox.h"

控件类更改CBitComboBoxCComboBox

CBitComboBox m_cmbBitmap;

CBitComboBox类中调用以下函数来设置皮肤位图的资源ID OnInitDialog(或在创建组合框之前的项目中的任何位置)。

m_cmbBitmap.SetComboBitmap(IDB_COMBO_LEFT,
   IDB_COMBO_RIGHT,IDB_COMBO_CEN);
m_cmbBitmap.SetComboListBitmap(IDB_LIST_LEFT, 
   IDB_LIST_RIGHT,IDB_LIST_TOP,IDB_LIST_BOT);
m_cmbBitmap.SetHighlightColor(RGB(115,138,174), RGB(255,255,255));
m_cmbBitmap.SetNormalPositionColor(RGB(115,138,154), RGB(255,255,255));

什么不见​​了

有以下事情丢失,如果有人可以完成他们请让我知道:

  1. 如果没有皮肤设置,默认组合框应该出现(可以通过简单地CComboBox从覆盖调用函数来完成)。
  2. 我还没有实现对组合框的编辑控件的外观(可在做OnCtrlColorCBitComboBox)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值