vb6及c++ mfc下拉框显示区长度修改
便于操作,为下拉框组件添加一个对象:CComboBox my_combox;在mfc中,对下拉框添加事件处理,在事件处理函数中设置宽度即可。使用api函数SendMessage函数初始化下拉框宽度。
·
在开发项目时,下拉框一般用于获取列表数据并显示,便于用户选择,但是对于长度较长的选项,一般后面的文字难以看到,对于较老的开发语言,不能实现悬浮显示的功能,现在记录一下两个修改方式:
目录
二、c++ MFC修改Combo-box Control下拉框显示区宽度
一、vb6修改comboBox下拉框显示区宽度
使用api函数SendMessage函数初始化下拉框宽度
展示:

实现:
在模块中引入api函数:
Public Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
初始化或者窗体加载时,初始化宽度:
SendMessage CombPN.hwnd, &H160, 300, 0 '宽度单位为像素,设置成300
二、c++ MFC修改Combo-box Control下拉框显示区宽度
在mfc中,对下拉框添加事件处理,在事件处理函数中设置宽度即可
展示:

步骤1:
便于操作,为下拉框组件添加一个对象:CComboBox my_combox;
步骤2:
为下拉框添加一个事件,类向导 -> 下拉框IDC_COMBO1 -> 消息找到CBN_DROPDOWN,双击写函数名称即可,点击应用,确定-> 在自定义函数名称中加入以下代码:
int DEL_RECT_WIDTH = 70; ///下拉框预留宽度
void Coutging_checkDlg::OnCbnDropdownCombo1() //下拉框事件处理
{
// TODO: 在此添加控件通知处理程序代码
CClientDC dc(this);
int nWitdh = 10;
int nSaveDC = dc.SaveDC();
//获取字体信息,
dc.SelectObject(GetFont());
//计算最大的显示长度
for (int i = 0; i < my_combox.GetCount(); i++)
{
CString strLable = _T("");
my_combox.GetLBText(i, strLable);
nWitdh = max(nWitdh, dc.GetTextExtent(strLable).cx);
}
//多增加的冗余宽度
nWitdh += DEL_RECT_WIDTH + 5; //DEL_RECT_WIDTH:预留宽度
//设置下拉列表宽度
my_combox.SetDroppedWidth(nWitdh);
//恢复实际dc
dc.RestoreDC(nSaveDC);
}
这样就结束了,如果有误,欢迎指导出来,很乐意改善,就这样啦,谢谢!!正在努力进步
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)