VC CComboBox用法总结

简介:

VC每日一练,虽然简单,不动手试一下不能真正记住。

复制代码
大气象
CComboBox  * comboBox = (CComboBox * )GetDlgItem(IDC_COMBO1);

comboBox
-> InsertString( 0 ,_T( " 9:30  " ));
comboBox
-> InsertString( 1 , _T( " 10:30  " )); 
comboBox
-> SetCurSel( 1 );  // 设置选中的项
// 取得选中的值
CString selStr;
int  nIndex  =  comboBox -> GetCurSel(); // 取得选中的索引
comboBox -> GetLBText(nIndex,selStr);

MessageBox(selStr);
复制代码

 默认ComboBox显示一个很短的下拉框,很不方便。这里有个函数,可以让你设置下拉列表的高度,很方便。
先在头文件中声明:

 

public :
    
void  set_DropDownSize(CComboBox &  box, UINT LinesToDisplay);

 

 再在源文件中定义:

复制代码
大气象
void  CMySdiView::set_DropDownSize(CComboBox &  box, UINT LinesToDisplay) 
/* -------------------------------------------------------------------------- 
* Purpose: Set the proper number of lines in a drop-down list or 
* combo box. 
* Description: Resizes the combo box window to fit the proper number 
* of lines. The window must exist before calling this function. 
* This function should be called when the combo box is created, and when 
* the font of the combo box changes. (e.g. WM_SETTINGCHANGE) 
* Testing needed: 
* Are there cases where SM_CYBORDER should be used instead of SM_CYEDGE? 
* owner-draw variable height combo box 
* Subclassed combo box with horizontal scroll-bar 
* Returns: nothing 
* Author: KTM 
*--------------------------------------------------------------------------
*/  

    ASSERT(IsWindow(box)); 
//  Window must exist or SetWindowPos won't work 

    CRect cbSize; 
//  current size of combo box 
     int  Height;  //  new height for drop-down portion of combo box 

    box.GetClientRect(cbSize); 
    Height 
=  box.GetItemHeight( - 1 );  //  start with size of the edit-box portion 
    Height  +=  box.GetItemHeight( 0 *  LinesToDisplay;  //  add height of lines of text 

    
//  Note: The use of SM_CYEDGE assumes that we're using Windows '95 
    
//  Now add on the height of the border of the edit box 
    Height  +=  GetSystemMetrics(SM_CYEDGE)  *   2 //  top & bottom edges 

    
//  The height of the border of the drop-down box 
    Height  +=  GetSystemMetrics(SM_CYEDGE)  *   2 //  top & bottom edges 

    
//  now set the size of the window 
    box.SetWindowPos(NULL,  //  not relative to any other windows 
     0 0 //  TopLeft corner doesn't change 
    cbSize.right, Height,  //  existing width, new height 
    SWP_NOMOVE  |  SWP_NOZORDER  //  don't move box or change z-ordering. 
    ); 
复制代码

 

再在OnInitialUpdate()函数中调用:

CComboBox  * comboBox = (CComboBox * )GetDlgItem(IDC_COMBO1);
set_DropDownSize(
* comboBox, 5 );// 第二个参数决定高度是显示几行
UpdateData(
false );

 

 




    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/greatverve/archive/2010/11/11/ccombobox.html,如需转载请自行联系原作者



相关文章
|
2月前
|
人工智能 Python
这个开源、免费的国产Agent封神了!一句话搞定复杂任务
曾火爆全网的Manus因收费、限区退出中国,而今国产替代AiPy横空出世!开源免费、本地运行,无需复杂提示词,一句指令即可自动拆解任务、写代码、执行并纠错。L5级智能体,真正实现全自动工作流,效率跃升新境界。
|
存储 安全 测试技术
GoLang协程Goroutiney原理与GMP模型详解
本文详细介绍了Go语言中的Goroutine及其背后的GMP模型。Goroutine是Go语言中的一种轻量级线程,由Go运行时管理,支持高效的并发编程。文章讲解了Goroutine的创建、调度、上下文切换和栈管理等核心机制,并通过示例代码展示了如何使用Goroutine。GMP模型(Goroutine、Processor、Machine)是Go运行时调度Goroutine的基础,通过合理的调度策略,实现了高并发和高性能的程序执行。
766 29
|
数据可视化 安全 IDE
快速部署Langflow构建低代码应用
本文介绍了Langflow的基本信息,并通过阿里云计算巢完成了Langflow的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Langflow,非技术同学也能轻松搞定。
|
消息中间件 存储 Java
一览纵山小,原来RocketMQ是这样工作的!
本文介绍了阿里巴巴开源的高性能分布式消息队列系统RocketMQ的核心组件及其作用。RocketMQ拥有四个关键组件:NameServer、Broker、Producer和Consumer。NameServer作为注册中心维护路由信息;Broker负责消息的接收、存储和转发;Producer生成消息并通过Topic与Broker关联;Consumer则订阅并处理消息。文章详细解析了各组件的功能及交互逻辑,并展示了RocketMQ在异步通信、日志收集、流处理及事件驱动架构中的典型应用场景。通过整体框架的梳理,有助于读者更好地理解和掌握RocketMQ的工作机制。
260 4
|
搜索推荐 安全 大数据
大数据在医疗领域的应用与前景
【6月更文挑战第26天】大数据在医疗领域提升服务效率,助力疾病预防与精准治疗。电子病历优化数据管理,疾病预测预防个性化医疗成为可能。未来,智能医疗系统普及,远程医疗兴起,数据共享促进行业发展,同时隐私保护与安全备受关注。大数据正重塑医疗,开启健康新篇章。
|
数据库 数据安全/隐私保护 开发者
Odoo 15开发手册第一章 使用开发者模式快速入门
Odoo提供了一个快速应用开发框架,尤其适合构建商业应用。这类应用通常用于保存业务记录和工作流。Odoo 不仅简化了这类应用的构建,还提供了看板、日历、图表等视图的丰富组件,用于创建难以抗拒的用户界面。
1440 3
Odoo 15开发手册第一章 使用开发者模式快速入门
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用问题之如何查看所有的表结构
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
291 0
|
分布式计算 MaxCompute Python
【Maxcompute】bd09、gcj02、wgs84经纬度坐标系转换udf函数
该文介绍了在Maxcompute平台上处理经纬度的实战应用,包括`bd09`、`gcj02`和`wgs84`坐标系之间的转换。提供了`CoordTransform` Python UDF类,支持六种转换操作。代码中包含了转换方法如`bd09togcj02`等,以及辅助计算静态方法。欢迎读者批评指正。
378 0
|
关系型数据库 MySQL
MySQL union和union all的用法详解和区别
MySQL union和union all的用法详解和区别
1708 0
|
消息中间件 监控 Kafka
Kafka 的特点和优势
Apache Kafka 作为一款分布式流处理平台,以其独特的特点和卓越的优势成为实时数据处理领域的瑰宝。本文将深入研究 Kafka 的各项特点和优势,并通过详实的示例代码展示其在不同场景下的强大应用。