CHScrollbarListBox

本文介绍了一个自定义的滚动条列表框控件,该控件能够根据内容自动调整水平滚动条的显示与隐藏,并确保所有项目都能完整显示。文章详细展示了如何通过重写AddString和DeleteString方法来实现这一功能。

重点几个函数

参考 http://blog.youkuaiyun.com/god00/article/details/6783947

int CHScrollbarListBox::AddString( LPCTSTR lpszItem )
{
int nRet  = CListBox::AddString(lpszItem);


SCROLLINFO   scrollInfo; 
memset(&scrollInfo,   0,   sizeof(SCROLLINFO)); 
scrollInfo.cbSize   =   sizeof(SCROLLINFO); 
scrollInfo.fMask   =   SIF_ALL; 
GetScrollInfo(SB_VERT,   &scrollInfo,   SIF_ALL); 


int   nScrollWidth   =   0;  //vScrollwidth
if(GetCount()   >   1   &&   ((int)scrollInfo.nMax    >=   (int)scrollInfo.nPage)) 

nScrollWidth   =   GetSystemMetrics(SM_CXVSCROLL); 
  //Metrics 分辨率 宽度以分辨率为单位



RECT lRect;
GetWindowRect(&lRect);
int nBoxWidth = lRect.right - lRect.left - nScrollWidth;




SIZE   sSize; 
CClientDC   myDC(this); 
CFont*   pListBoxFont   =   GetFont(); 
if(pListBoxFont   ==   NULL) 
{
}


CFont*   pOldFont   =   
myDC.SelectObject(pListBoxFont); 
GetTextExtentPoint32(myDC.m_hDC,  lpszItem,   _tcslen(lpszItem),   &sSize); 
m_nMaxWidth   =   max(m_nMaxWidth,   (int)sSize.cx);
if (m_nMaxWidth+5 > nBoxWidth)
{
SetHorizontalExtent(m_nMaxWidth  +  4); 
}
myDC.SelectObject(pOldFont);   


return   nRet; 

}


int CHScrollbarListBox::DeleteString( UINT nIndex )
{
int nRet = CListBox::DeleteString(nIndex);


RECT lRect;
    GetWindowRect(&lRect);
SCROLLINFO   scrollInfo; 
memset(&scrollInfo,   0,   sizeof(SCROLLINFO)); 
scrollInfo.cbSize   =   sizeof(SCROLLINFO); 
scrollInfo.fMask   =   SIF_ALL; 
GetScrollInfo(SB_VERT,   &scrollInfo,   SIF_ALL); 


int   nScrollWidth   =   0;  //vScrollwidth
if(GetCount()   >   1   &&   ((int)scrollInfo.nMax   
     >=   (int)scrollInfo.nPage)) 

nScrollWidth   =   GetSystemMetrics(SM_CXVSCROLL); 



SIZE sSize;
CClientDC myDC(this);
CString lpszItem;
CFont* pListFont = GetFont();
CFont* pOldFont = myDC.SelectObject(pListFont);
    
int nBoxWidth = lRect.right  - lRect.left - nScrollWidth;
m_nMaxWidth = 0;
for (int i = 0 ; i < GetCount(); i ++)
{
CListBox::GetText(i,lpszItem);
GetTextExtentPoint32(myDC.m_hDC,lpszItem,_tcslen(lpszItem.GetBuffer()),&sSize);
lpszItem.ReleaseBuffer();
m_nMaxWidth = max(m_nMaxWidth, (int)sSize.cx);
}
myDC.SelectObject(pOldFont);


if(nBoxWidth < m_nMaxWidth +5)
{
      SetHorizontalExtent(m_nMaxWidth + 4);
}else
{
ShowScrollBar(SB_HORZ,FALSE);
  SetHorizontalExtent(0);
}
return nRet;
}


void CHScrollbarListBox::ResetContent()
{
CListBox::ResetContent();
m_nMaxWidth = 0 ;
SetHorizontalExtent(0);
}

本 PPT 介绍了制药厂房中供配电系统的总体概念与设计要点,内容包括: 洁净厂房的特点及其对供配电系统的特殊要求; 供配电设计的一般原则与依据的国家/行业标准; 从上级电网到工厂变电所、终端配电的总体结构与模块化设计思路; 供配电范围:动力配电、照明、通讯、接地、防雷与消防等; 动力配电中电压等级、接地系统形式(如 TN-S)、负荷等级与可靠性、UPS 配置等; 照明的电源方式、光源选择、安装方式、应急与备用照明要求; 通讯系统、监控系统在生产管理与消防中的作用; 接地与等电位连接、防雷等级与防雷措施; 消防设施及其专用供电(消防泵、排烟风机、消防控制室、应急照明等); 常见高压柜、动力柜、照明箱等配电设备案例及部分设计图纸示意; 公司已完成的典型项目案例。 1. 工程背景与总体框架 所属领域:制药厂房工程的公用工程系统,其中本 PPT 聚焦于供配电系统。 放在整个公用工程中的位置:与给排水、纯化水/注射用水、气体与热力、暖通空调、自动化控制等系统并列。 2. Part 01 供配电概述 2.1 洁净厂房的特点 空间密闭,结构复杂、走向曲折; 单相设备、仪器种类多,工艺设备昂贵、精密; 装修材料与工艺材料种类多,对尘埃、静电等更敏感。 这些特点决定了:供配电系统要安全可靠、减少积尘、便于清洁和维护。 2.2 供配电总则 供配电设计应满足: 可靠、经济、适用; 保障人身与财产安全; 便于安装与维护; 采用技术先进的设备与方案。 2.3 设计依据与规范 引用了大量俄语标准(ГОСТ、СНиП、SanPiN 等)以及国家、行业和地方规范,作为设计的法规基础文件,包括: 电气设备、接线、接地、电气安全; 建筑物电气装置、照明标准; 卫生与安全相关规范等。 3. Part 02 供配电总览 从电源系统整体结构进行总览: 上级:地方电网; 工厂变电所(10kV 配电装置、变压
效果展示:https://pan.quark.cn/s/fd43e443a535 AutoHS 目前已经恢复了对狂野模式暗牧的支持,不过整体胜率并不是很乐观,只能说未来可期。 本项目适用于以下目标: python编程实战 概率论与数理统计学习 程序化博弈练手 切勿将本项目用于违反用户许可协议的任何行为。 欢迎加入QQ群1012629918讨论交流。 主要新特性 已支持回归后的新版炉石,包括新版定位等 鉴于经典模式被删除,目前已面向狂野模式进行开发,并新增了对地标等新卡的识别 支持2560x1440分辨率 全新的日志模块,看着像模像样 GUI启动与配置界面 支持使用地标 基于日志文本信息的状态识别,相比于像素点判断更加稳定 在热心网友的帮助下支持了系统 如何运行 安装。 安装所需依赖: 启动命令行并在项目目录下运行。 运行正常的话应该能看到如下图所示的GUI界面: GUI 同时命令行中会开始打印日志信息如下: LOG 更新脚本配置,必须更新GUI界面中的和两项配置。 脚本需要使用前者来定位炉石传说游戏的位置,使用后者来在对局中识别哪一方是玩家。 玩家名的格式为,不过可以只输入部分名字,脚本会进行字符串匹配。 中记录了对战过程中每一个对象(Entity)的每一项属性(tag)的变化。 这个对象包括玩家、英雄、英雄技能、卡牌(无论在牌库里、手牌中、战场上还是坟地里)等。 每次启动炉石传说时,游戏会在目录下新创建一个文件夹,文件夹内包含以及其他文件。 如果你在目录下没有找到(指对战开始后),那稍微有一些麻烦。 你需要到目录下新建一个叫的文件(如果已经有就不用新建了),然后把下面这段代码放进去(如果已经有或相关则更改相关设置): 关于炉石log的更多信息可以查看这个Reddi...
内容概要:本文详细介绍了一个基于Python实现的PSO-PNN混合模型项目,旨在通过粒子群优化算法(PSO)优化概率神经网络(PNN)的关键参数(如平滑因子),从而提升数据分类预测的精度与泛化能力。文章阐述了项目背景、目标与意义,分析了在高维复杂数据、样本不均衡、噪声干扰等挑战下的解决方案,并系统介绍了整体架构,包括数据预处理、PSO优化模块、PNN分类模型、适应度函数设计、并行计算优化及性能评估等核心组成部分。文中还提供了关键代码示例,展示了从数据标准化、模型构建到优化训练和性能评估的完整流程。; 适合人群:具备一定Python编程和机器学习基础,从事数据分析、智能算法研究或工程应用的研发人员、研究生及算法爱好者;尤其适合希望深入了解智能优化算法与神经网络融合应用的中级学习者。; 使用场景及目标:①解决PNN模型依赖人工调参的问题,实现平滑因子的自动优化;②提升复杂、高维、小样本或不均衡数据下的分类准确率;③应用于金融风控、医疗诊断、工业故障检测等高精度分类场景;④学习PSO与PNN协同机制及其工程实现方法。; 阅读建议:建议结合文中提供的代码示例与理论描述同步实践,重点关注适应度函数设计、PSO参数配置与交叉验证的集成,调试时注意收敛性与过拟合控制,以深入掌握该复合模型的优化逻辑与应用技巧。
CQU-FACE 功能 [x] 图片上传/即时拍照人脸特征分析展示 [x] 分析报告社区分享 [x] 社区动态发现、点赞、评论 [x] 用户关注、收藏等 [x] 历史记录查询和编辑 [x] 登录/未登录身份权限控制 [x] 漂亮的UI 前端技术 技术栈 Vue.js vue/cli (多页面) vue-router vuetify axios 权限控制 分为前端路由控制和后端令牌验证 通过vue-router导航守卫,使用router.beforeEach来检查路由跳转条件。 判断是否需要登录 - 是,从localStorage中拿到account - 如果拿到account则可以跳转 - 否则重定向到登录页,并记录当前路由,登录后跳转回来 - 否,可以跳转 通过Axios拦截器Interceptors进行全局的ajax请求配置 - request:在Header中添加token字段 - response:返回状态码405(自定义),表示未授权,跳转登录页。 处理跨域问题、CSRF问题 后端django-cors-headers配置解决跨域问题 axios配置头Header添加X-CSRFToken,通过正则表达来从cookie中拿到csrftoken,进行验证 路由控制 由router-view控制路由,以及路由对应的视图。 并配置404页面。 下载前可以先看下教程 https://pan.quark.cn/s/0745227d0284 前端框架 使用vue/cli快速搭建前端工程,形成目录结构和必要文件 配置Vue多页面,welcome为单独页,应用页单独页 在App.vue中进行全局模板的配置,上方使用一个Bar,左侧使用抽屉导航栏,下方使用Footer页脚,中间部...
本软件提供多种基于张量理论的流动诱导纤维取向计算功能,涵盖Jeffrey模型、Folgar-Tucker模型及各向异性旋转扩散系列(如Phelps-Tucker五参数模型、iARD、pARD、MRD与Wang双参数模型)以及慢速动力学方法(包括SRF、RSC与RPR)。针对四阶方向张量,支持三维空间中的线性、二次、混合、正交各向异性、自然及IBOF闭合近似;在平面取向分析中,则提供Bingham分布、自然近似、椭圆半径法、正交各向异性D型与非正交F型等多种闭合方案。 软件可计算平面或三维条件下的完整方向分布函数,适用于瞬态或稳态过程,并整合了Jeffery、Folgar-Tucker与ARD等基础取向动力学模型。同时支持基于Phelps-Tucker理论的纤维长度分布演化模拟。 在线弹性刚度预测方面,集成了平均场模型体系,包括Halpin-Tsai公式、稀释Eshelby解、Mori-Tanaka方法及Lielens双夹杂模型,适用于单向或分布型纤维取向情况。所有刚度模型均可导出对应的热应力张量与热膨胀张量。 此外,软件具备经典层压板理论分析能力,可处理随厚度变化的纤维取向对复合材料板刚度的影响。在分布函数重构方面,提供Jeffery解析解、Bingham分布、椭圆半径法及四阶最大熵函数等多种方法用于平面取向分布的重建。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值