C++界面颜值翻身:重构Group控件,质感直接拉满

📅 2026/6/26 7:44:27
C++界面颜值翻身:重构Group控件,质感直接拉满
如何打造一个与众不同的Group控件先上效果图后讲实现过程,最后再赋上源码。如果大家要是觉得这个效果入不了您的眼那就不用浪费时间往下看了。实现过程开发环境VS2019第三方库酷宝-001-先驱者 下载地址库来帮 www.kulb.cn接入方法我前面有讲就不再重述。#defineKB_GROUPBOX_ROUND_FALSE0//关闭圆角#defineKB_GROUPBOX_ROUND_MINI1//开启小圆角#defineKB_GROUPBOX_ROUND_LARGE2//开启大圆角#defineKB_GROUPBOX_ROUND_SUPER3//开启超大圆角#defineKB_GROUPBOX_ROUND_STYLE_ROUND0//圆角样式-圆#defineKB_GROUPBOX_ROUND_STYLE_SHARP1//圆角样式-直#defineKB_GROUPBOX_LAYOUT_DEFAULT0//文字默认排版#defineKB_GROUPBOX_LAYOUT_LEFT1//文字左侧排版#defineKB_GROUPBOX_LAYOUT_RIGHT2//文字右侧排版#defineKB_GROUPBOX_LAYOUT_BOTTOM3//文字底部排版typedef structKB_GroupConf{BOOLBRoundRect;//是否开启圆角 默认不开启BYTEBRoundStyle;//圆角样式 参见KB_GROUPBOX_ROUND_STYLE...BYTEBLayout;//布局方式 参见KB_GROUPBOX_LAYOUT...DWORDdwLineColor;//保存线条颜色KB_GroupConf(){BRoundRectKB_GROUPBOX_ROUND_FALSE;BRoundStyleKB_GROUPBOX_ROUND_STYLE_ROUND;BLayoutKB_GROUPBOX_LAYOUT_DEFAULT;dwLineColor 0xFFFFFFFF;// 0xFF FF FF FF//透明度 R G B}}KB_GROUP_CONF;以上是须要用到的参数和结构---------------------------------------------------------------------下面是关于Group修改须要用到的所有函数//获取Group全局配置//buf保存获取到的配置信息//反回值成功反回TRUE 失败反回FALSEKBLIBRARYAPIBKB_GetGroupBaseConf(KB_GroupConf buf);//修改Group类型的全局配置 所有窗口的Group以及后面新创建的Group都会以这个为准//GC新的配置//反回值反回已修改的数量 没有反回0KBLIBRARYAPIIKB_SetGroupBaseConf(const KB_GroupConf GC);//获取指定Group的配置//buf保存获取到的配置信息//反回值成功反回TRUE 失败反回FALSEKBLIBRARYAPIBKB_GetGroupConf(HWND hWnd, KB_GroupConf buf);//修改指定Group的配置//hWnd须要修改的窗口句柄以及该窗口下面的所有子窗口都会被修改//GC新的配置//反回值反回已修改的数量 没有反回0KBLIBRARYAPIIKB_SetGroupConf(HWND hWnd, const KB_GroupConf GC);//通过ID获取Group的配置KB_GetGroupConf作用相同//hParentGroup所在的父窗口句柄//UIDGroup的控件ID//buf保存获取到的配置信息//反回值成功反回TRUE 失败反回FALSEKBLIBRARYAPIBKB_GetIDGroupConf(HWND hParent, UINT UID, KB_GroupConf buf);//通过ID修改指定Group的配置KB_SetGroupConf作用相同//hParentGroup所在的父窗口句柄//UIDGroup的控件ID, 以及该ID下面的所有子窗口都会被修改//GC新的配置//反回值反回已修改的数量 没有反回0KBLIBRARYAPIIKB_SetIDGroupConf(HWND hParent, UINT UID, const KB_GroupConf GC);//获取指定Group线条颜色//hWnd须要获取的Group句柄//反回值成功反回指定Group线条颜色 失败反回0KBLIBRARYAPIDKB_GetGroupLineColor(HWND hWnd);//修改指定Group线条颜色//hWnd须要修改的Group句柄//dwLineColor须要设置的线条颜色//反回值成功反回TRUE 失败反回FALSEKBLIBRARYAPIBKB_SetGroupLineColor(HWND hWnd, DWORD dwLineColor);//Group开启圆角效果//hWnd须要设置的Group句柄//BRound开启或关闭圆角 详情见KB_GROUPBOX_ROUND...//BRoundStyle圆角样式 详情见KB_GROUPBOX_ROUND_STYLE...//反回值成功反回TRUE 失败反回FALSEKBLIBRARYAPIBKB_SetGroupRoundRect(HWND hWnd, BYTE BRound, BYTE BRoundStyle KB_GROUPBOX_ROUND_STYLE_ROUND);//Group文字排版布局//hWnd须要设置的Group句柄//BLay布局标志 详情见KB_GROUPBOX_LAYOUT...//反回值成功反回TRUE 失败反回FALSEKBLIBRARYAPIBKB_SetGroupLayout(HWND hWnd, BYTE BLayout);如果是圆角样式线条颜色等整体修改那就使用这两个函数KB_SetGroupConf、KB_SetIDGroupConf功能都是一样的一个是通过控件句柄去修改另一个是通过控件ID去修改。如果只修改其中一个项那就分别使用KB_SetGroupLineColor修改线条颜色及透明度KB_SetGroupRoundRect修改圆角样式KB_SetGroupLayout修改文字排版布局添加控件ComboBox用于控制圆角的开启并响应切换消息nRoundRectm_Combo1.GetCurSel();KB_SetGroupRoundRect(m_Map1, nRoundRect, nRoundStyle);添加控件ComboBox用于控制圆角并响应切换消息nRoundStylem_Combo2.GetCurSel();KB_SetGroupRoundRect(m_Map1, nRoundRect, nRoundStyle);添加控件ComboBox用于控制文字排版并响应切换消息intnRem_Combo3.GetCurSel();KB_SetGroupLayout(m_Map1, nRe);添加按钮控制线条颜色CColorDialogCDlg(DwordChangeColor(dwLineColor));intnRe (int)CDlg.DoModal();if (nRe IDOK){WCHARwBuffer[MAX_PATH] { 0 };dwLineColor DwordChangeColor(CDlg.GetColor());DWORDdwColordwLineColor| 0xFF000000;KB_SetGroupLineColor(m_Map1, dwColor);}添加滑块控制线条透明度响应WM_HSCROLL消息int pos m_Slider1.GetPos();float fpos (float)pos;fpos / 100;fpos * 0xFF;BAlpha (BYTE)fpos;DWORDdwColorBAlpha 24;dwColor|dwLineColor 0x00FFFFFF;KB_SetGroupLineColor(m_Map1, dwColor);看看我自己最终实现的效果。完整源码我已上传大家可自行下载研究。