combobox之下拉宽度自适应

效果对比

先看下优化前后的效果,再看实现过程.

优化前

优化后

从上图中可看到,combobox优化后可以自适应不同长度的字符串,保证每个字符串都能够显示完整。

实现过程

当我们触发CBN_DROPDOWN事件时,不再使用默认的实现,而是利用消息反射机制,重新计算下拉列表的宽度,具体步骤如下:

  • 生成CMyComboBox类,这个类继承CComboBox
  • 将CMyComboBox绑定combobox控件
  • 响应CBN_DROPDOWN消息响应
  • 重新计算最大的下拉列表长度

CMyComboBox类

类声明
class CMyComboBox : public CComboBox
{DECLARE_DYNAMIC(CMyComboBox)public:CMyComboBox();virtual ~CMyComboBox();protected:DECLARE_MESSAGE_MAP()
public:afx_msg void OnCbnDropdown();
};

BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
//消息反射声明
ON_CONTROL_REFLECT(CBN_DROPDOWN, &CMyComboBox::OnCbnDropdown)
END_MESSAGE_MAP()// CMyComboBox 消息处理程序
void CMyComboBox::OnCbnDropdown()
{CClientDC dc(this);int nWitdh = 10;int nSaveDC = dc.SaveDC();//获取字体信息,dc.SelectObject(GetFont());//计算最大的显示长度for (int i = 0; i < GetCount(); i++){CString strLable = _T("");GetLBText(i, strLable);nWitdh = max(nWitdh,dc.GetTextExtent(strLable).cx);}//多增加的冗余宽度nWitdh += 10;//设置下拉列表宽度SetDroppedWidth(nWitdh);//恢复实际dcdc.RestoreDC(nSaveDC);
}

转载于:https://www.cnblogs.com/jinxiang1224/p/8468317.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python工具:将文件夹下的视频按照帧数输出图片文件(含代码)

1、描述 将一个视频流按帧数截取大量的图片 2、用途 AI的数据集制作&#xff0c;得到大量的图片&#xff0c;之后将其打标签 3、案例文件截图 4、代码实现&#xff1a; import cv2 import argparse import os# 边里该文件夹下的文件名称 def read_directory(directory_nam…

用Python语言对任意图像进行m*n的均匀分块(思路非常清晰,步骤简单)

主要用途&#xff1a;处理图片数据集 1 对单个图片进行分块 import numpy as np import matplotlib.pyplot as plt import cv2def divide_method1(img,m,n):#分割成m行n列print(img.shape)h, w img.shape[0],img.shape[1]gx np.round(h).astype(np.int)gy np.round(w).asty…

python爬虫用什么软件写_python爬虫怎么写

如今很多有编程能力的小伙伴已经不满足手动搜索内容了&#xff0c;都希望通过编写爬虫软件来快速获取需要的内容&#xff0c;那么如何使用python制作爬虫呢&#xff1f;下面小编给大家讲解一下思路 工具/原料 python 方法/步骤 1 首先我们需要确定要爬取的目标页面内容&#xf…

花书《深度学习》代码实现:01 线性代数:基本概念+代码实现基本运算

1 标量、向量、矩阵和张量 2 矩阵和向量相乘 3 单位矩阵和逆矩阵 3.0 单位矩阵 a np.identity(3) # 三行三列单位矩阵 3.1 矩阵的逆 A [[1.0,2.0],[3.0,4.0]] A_inv np.linalg.inv(A) print("A 的逆矩阵", A_inv) 3.1 转置 A np.array([[1.0,2.0],[1.0,0…

【Pytorch神经网络理论篇】 38 Transformers:安装说明+应用结构+AutoModel类

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

clone是深拷贝还是浅拷贝_Python中的浅拷贝和深拷贝

本文翻译自copy in Python (Deep Copy and Shallow Copy)&#xff0c;讲述了在Python语言中浅拷贝与深拷贝的不同用法。全文系作者原创&#xff0c;仅供学习参考使用&#xff0c;转载授权请私信联系&#xff0c;否则将视为侵权行为。码字不易&#xff0c;感谢支持。以下为全文内…

【Pytorch神经网络实战案例】32 使用Transformers库的管道方式实现:加载指定模型+文本分类+掩码语言建模+摘要生成+特征提取+阅读理解+实体词识别

管道方式是Transformers库中高度集成的极简使用方式。使用这种方式来处理NLP任务&#xff0c;只需要编写几行代码就能实现。通过本例的练习可以使读者对Transformers库的使用快速上手。 1 在管道方式中指定NLP任务 Transfomers库的管道方式使用起来非常简单&#xff0c;核心步…

jqprint获取打印页数_如何将每张打印多页PPT的PDF变成常规课件

在工作和学习中&#xff0c;经常会收到各种 PDF 文件&#xff0c;尤其是老师的课件。为了防止学生大量上传到各种文库网站赚积分&#xff0c;或者为了方便学生打印出来预习复习。通常&#xff0c;会在每页 PDF 里面&#xff0c;打印多张 PPT 内容。一般是 6 张或 9 张&#xff…

vba 判断文本框内容是否为空_【VBA】 数据输入 Inputbox 基本语法

在使用Excel 的过程中&#xff0c;如果需要用户输入简单的数据&#xff0c;作为“已知数”&#xff0c;那么可以使用inputbox 函数显示一个对话框&#xff0c;供用户在对话框中输入数据。 Inputbox 函数语法在一对话框来中显示提示&#xff0c;等待用户输入正文或按下按钮&…

无向图的深度优先遍历非递归_LeetCode0429: N叉树的层序遍历

题目介绍描述&#xff1a;给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。 (即从左到右&#xff0c;逐层遍历)。例如&#xff0c;给定一个 3叉树 :返回其层序遍历:[[1],[3,2,4],[5,6] ]说明:树的深度不会超过 1000。 树的节点总数不会超过 5000。解题思路&#xff1a;★ …

一条龙操作有效解决PermissionError: [WinError 5] 拒绝访问的问题

1 问题描述 当在使用pip install 安装包时&#xff0c;如&#xff1a;pip install scrapy scrapyd scrapyd-client spiderkeeper出现报错&#xff1a;PermissionError: [WinError 5] 拒绝访问。: ‘c:\programdata\anaconda3\lib\site-packages\dateutil\easter.py’ 2 解决办…

预订态势图

//预订态势图JS//根据日期得到对应星期几 function getWeekByDay(riqi){//2017-01-23;var getWeek "";var arys1 new Array(); arys1riqi.split(-); //日期为输入日期&#xff0c;格式为 2013-3-10var ssdatenew Date(arys1[0],parseInt(arys1[1]-1),arys1…

altera fpga sdi输出方案_FPGA在电力电子中的应用有哪些?

大家好&#xff0c;很抱歉上周末没有及时更新公众号&#xff0c;本来这期想聊聊IGBT的拖尾电流&#xff0c;但是由于周末去深圳高交会(高新技术成果交易会)逛了一天&#xff0c;时间给耽搁了&#xff0c;感觉要想把拖尾电流讲清楚也不太容易&#xff0c;还得需要点时间&#xf…

【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

Unity之CharacterController2D学习笔记(1)——基础使用

在很多游戏类型中&#xff0c;玩家角色对物理行为的处理往往和场景中其它物体的行为有比较大的区别。比如角色可能会以90多公里的时速狂奔&#xff0c;同时一次跳跃能跳10多米高&#xff0c;与此同时却几乎不会有任何惯性。同时角色在正常情况下当头部碰到障碍物的时候&#xf…

【Pytorch神经网络实战案例】33 使用BERT模型实现完形填空任务

1 案例描述 案例&#xff1a;加载Transformers库中的BERT模型&#xff0c;并用它实现完形填空任务&#xff0c;即预测一个句子中缺失的单词。 2 代码实现&#xff1a;使用BERT模型实现完形填空任务 2.1 代码实现&#xff1a;载入词表&#xff0c;并对输入的文本进行分词转化--…

c++ string 删除字符_字符串操作的全面总结

来自公众号&#xff1a;C语言与cpp编程字符串操作看似简单&#xff0c;其实非常重要&#xff0c;不注意的话&#xff0c;经常出现代码运行结果和自己想要的不一致&#xff0c;甚至崩溃。本文总结了一些构建string对象方法、修改string对象的方法、string类型的操作函数、string…

【Pytorch神经网络理论篇】 40 Transformers中的词表工具Tokenizer

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络实战案例】34 使用GPT-2模型实现句子补全功能(手动加载)

1 GPT-2 模型结构 GPT-2的整体结构如下图&#xff0c;GPT-2是以Transformer为基础构建的&#xff0c;使用字节对编码的方法进行数据预处理&#xff0c;通过预测下一个词任务进行预训练的语言模型。 1.1 GPT-2 功能简介 GPT-2 就是一个语言模型&#xff0c;能够根据上文预测下…

电容式传感器位移性能试验报告_一文读懂什么是接近传感器?

点击上方蓝字 记得关注我们哦&#xff01;接近传感器是一种非接触式传感器&#xff0c;当目标进入传感器的视野时&#xff0c;它会检测到物体(通常称为“目标”)的存在。取决于接近传感器的类型&#xff0c;传感器可以利用声音&#xff0c;光&#xff0c;红外辐射(IR)或电磁场来…