终于去掉了combobox的3D边框
曾经为去掉combobox的3D边框大伤脑筋,因为要把combobox放到列表里,有3D边框看着很别扭。闲话不多说了,我是这样做的:
1、新建一个从CComboBox派生的类,如CMyComboBox,重载OnPaint消息响应函数,先什么都不做。
2、在父窗口上建立成员变量,CMyComboBox m_MyCombo,绑定到一个combobox控件上,运行时你会发现combobox变样了,没有了边框,只剩下个白色的矩形。
3、在StdAfx.h里定义:#defined WINVER 0x0500
4、在CMyComboBox类的OnPaint()消息响应函数里:
运行时,你会发现这是一个没有3D边框的combobox。
1、新建一个从CComboBox派生的类,如CMyComboBox,重载OnPaint消息响应函数,先什么都不做。
2、在父窗口上建立成员变量,CMyComboBox m_MyCombo,绑定到一个combobox控件上,运行时你会发现combobox变样了,没有了边框,只剩下个白色的矩形。
3、在StdAfx.h里定义:#defined WINVER 0x0500
4、在CMyComboBox类的OnPaint()消息响应函数里:
void CMyComboBox::OnPaint()
{
CPaintDC dc(this);
COMBOBOXINFO cbi = {sizeof(COMBOBOXINFO), 0};
::GetComboBoxInfo(m_hWnd, &cbi);//得到combobox信息
DWORD uState = cbi.stateButton == STATE_SYSTEM_PRESSED ? DFCS_FLAT : 0;
::DrawFrameControl(dc.m_hDC, &cbi.rcButton, DFC_SCROLL, DFCS_SCROLLDOWN | uState);//根据下箭按纽状态画下箭按纽
::FillRect(dc.m_hDC, &cbi.rcItem, ::GetSysColorBrush(COLOR_WINDOW));//填充白色
CFont* font = GetParent()->GetFont();
::SelectObject(dc.m_hDC, font->m_hObject);//选用父窗口的字体
CString str;
GetLBText(GetCurSel(), str);//得到当前选择项文本
::DrawText(dc.m_hDC, str, strlen(str), &rcItem, DT_VCENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS);//画文本
}
运行时,你会发现这是一个没有3D边框的combobox。
...全文
相关推荐
unity3D 制作的ComboBox组件
由于unity3d 5.3以上的版本才有UGUI 的DrowDownList组件,其它版本没有。于是参照JS下拉列表构建思想,制作了该组件。已经打包成了资源包,压缩包内包含有效果图和代码部分说明。
AE中添加使用comboBox进行添加图层VB代码
AE中添加使用comboBox进行添加图层代码
Quest3d GUI设计笔记
介绍了Quest3d软件的GUI常用的Channel,介绍了设计GUI的方法
3D文字制作软件源码VB版.rar_3D文字制作软件源码VB版_vb 3d
3D文字制作软件源码VB版 3D text production software source code VB version
Opengl1.0.rar_OpenGL1.1
La libreria de opengl 1.0


