真彩色工具栏和可视的拖拽操作

MATLAB GUI工具栏开发指南:从App Designer到GUIDE的实战教程 图形用户界面(GUI)是提升软件交互体验的核心组件,其设计原理在于通过可视化控件降低用户操作复杂度。在工程实践中,工具栏作为高频功能的快捷入口,能显著提升数据可视化与参数调整的效率。MATLAB作为科学计算与工程仿真的主流平台,其GUI开发体系提供了两种主流实现路径:基于面向对象组件的App Designer适合快速开发,而基于图形句柄的GUIDE则支持深度定制。本文聚焦工具栏这一关键交互元素,通过对比两种框架的创建机制、图标配置与回调函数编写,详解如何为数据可视化等场景构建专业级交互界面,帮助开发者实现从 阅读详情

今天总结两个MFC界面处理的问题:
1.  真彩色工具栏
2.  如何实现可视的拖拽操作
===============================真彩色工具栏=========================================
  
经过多次实践, 总结出关于工具栏的一些编程体会:

1. 更高位的色彩的支持

   对工具栏而言, 图标都保存在图象列表中,而对于这个图象列表, 自然是不能从 工具栏 资源中获得. 而要手动创建和设置
 
   CImageList  img;
   img.Create(44, 40, ILC_COLOR32 | ILC_MASK , 8, 2); 

   CImageList::Create几个重载函数中,只有这个生成的列表能提供对16位色以上色彩的支持.
     其他的几个同名函数, 采用默认方式创建的图象列表只支持16色(会丢失一些颜色)


   下一步就是向图象列表中添加图标或位图
   CBitmap bmp;
   bmp.LoadBitmap(IDB_TOOLBAR01);  
   img.Add(&bmp, RGB(255,0,255));  // 不要埋怨为什么必须用MFC类CBitmap, CImageList本身就是MFC类型
  
   img.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); // 这是添加图标

     另外, 在参考了MSDN 2003的例子mfcie 里面使用Rebar和toolbar的代码后,   可以通过修改REBARBANDINFO 结构体实现对工具条的背景图;   这样我们的工具栏就具有了 "自定义背景位图" 和 "24/32位真彩色图标" 两种特性. 不过遗憾的是引入了Rebar,  这也可能不像我们原来期望那样,  并不是一个简单的派生类的替换就可以了. 但是这也是十分可靠的一种方案.

2. 应用到工具栏中

   CToolBar的一个成员函数 GetToolBarCtrl, 如下:
   m_wndToolBar.GetToolBarCtrl().SetImageList(&img);        // 设置normal状态的图象列表
   m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);     // 设置hot 状态的图象列表
   m_wndToolBar.GetToolBarCtrl().SetDisabledImageList(&img) // 设置Disabled 状态的图象列表

3. 添加对应的Button
   m_wndToolBar.SetButtons(NULL, 13);
   m_wndToolBar.SetButtonInfo(0, ID_APP_ABOUT, TBSTYLE_BUTTON, 0);
   m_wndToolBar.SetButtonInfo(1, ID_VIDEORECT1, TBSTYLE_CHECK, 1);
   m_wndToolBar.SetButtonInfo(2, ID_VIDEORECT1, TBSTYLE_CHECKGROUP, 2);
   m_wndToolBar.SetButtonInfo(3, ID_VIDEORECT1, TBSTYLE_CHECKGROUP, 2);

===============================可视的拖拽操作========================================
1. 主要函数
   CImageList* pImageList;
   pImageList = CreateDragImage(hItem);                   // 这是个new操作,用后要delete

   CImageList::BeginDrag( int nImage, CPoint ptHotSpot);  // 非静态成员函数
   CImageList::DragEnter( CWnd* pWnd, CPoint pt);
   SetCapture();

   CImageList::DragMove(pt);       // WM_MOUSEMOVE处理函数中调用

   CImageList::DragLeave(NULL);    // WM_LBUTTONUP处理函数中调用
   CImageList::EndDrag();
   ReleaseCapture();

2. 需要了解的是除了成员函数BeginDrag以外,列出的CImageList的其他成员函数都是static类型.
   静态函数可以在没有对象存在的情况下使用; CImageList对象可以利用控件的成员函数生成默认的(如CTreeCtrl),
   也可以自己生成
 

Mac新手必看:给你的iTerm2终端装上‘拖拽上传’功能(rz/sz保姆级配置) 本文详细介绍了如何在Mac的iTerm2终端中配置rz/sz拖拽上传下载功能,提升文件传输效率。从基础环境准备到lrzsz工具链安装,再到iTerm2触发器深度配置,手把手教你实现终端操作效率的飞跃。特别适合需要频繁与远程服务器交互的开发者,让文件传输变得简单高效。 阅读详情

相关推荐

GUI Guider v1.7.0:基于LVGL的可视化嵌入式GUI开发实战指南

在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的核心组件,其设计直接影响用户体验。传统嵌入式GUI开发通常涉及底层驱动、内存管理和绘图算法,开发效率低且迭代周期长。随着物联网和智能设备的普及,对高性能、低资源占用的嵌入式GUI需求日益增长。LVGL(Light and Versatile Graphics Library)作为一款开源、轻量级的嵌入式图形库,通过提供丰富的控件和高效的渲染引擎,显著降低了开发门槛。其核心原理在于采用对象化的控件模型和高效的局部刷新机制,能够在资源受限的微控制器上实现

weixin_30274627的博客 399

MFC 定制Toolbar

一个好的软件,界面非常重要,其中的功能要让客户一目了然。而这些可以借助于工具栏,如在Microsoft Word中的工具栏,相关的操作基本上都可以借助工具栏来完成。下面,我就将我知道的关于VC中关于工具栏的一些东西写写,与大家共享,不对的地方请大家帮忙纠正。 下面我以Visual Studio.net 2003下的单文档/视图的程序为例说明。 在VS中,实现工具栏的类是CToolBar, 在新

louisejackie的专栏 1695

Arduino与NeoPixel灯环实现火焰模拟:从Visuino可视化到代码算法

在嵌入式开发与创意电子项目中,动态灯光效果是提升交互体验的关键技术之一。其核心原理在于通过微控制器(如Arduino)精确控制可独立寻址的LED(如WS2812/NeoPixel),利用PWM调光和时序协议实现丰富的色彩与动画。这项技术的价值在于能以极低的硬件成本,创造出高表现力、可编程的光效,广泛应用于艺术装置、氛围照明、模型场景和互动玩具中。本文聚焦于一个经典的应用场景——火焰模拟。通过剖析随机数生成、颜色映射与热传导算法,我们将探讨如何用代码模仿火焰的随机跳动与色彩渐变。文中不仅介绍了使用Visuin

weixin_30827827的博客 273

为CToolBar工具栏窗口按钮添加ICON图标需要注意的一点

VC使用CToolBar类创建工具栏,例如一个SDI应用程序,在MFC应用程序框架自动生成的工具栏IDR_MAINFRAME基础上,可使用资源编辑器创建工具栏资源,步骤如下: (1) 使用资源编辑器编辑工具栏IDR_MAINFRAME,删除所有自动生成的工具栏按钮,如新建、打开等 (2) 添加ID为ID_EXIT_BAR图标。 (3) 资源视图选中工程,右键【添加】->【添加资源】->【IC

wwfish的专栏 2803

PowerBuilder大图标Toolbar实例设计与实现

可建立一张快捷键映射表,集中管理所有热键绑定:// 定义结构体// 初始化映射数组astr_accels[1].button_index = 1 // Ctrl+N → 新建astr_accels[2].button_index = 2 // Ctrl+S → 保存graph LRA[KeyDown Event] --> B{匹配快捷键?B -- 是 --> C[查找映射表]C --> D[获取目标按钮]D --> E[触发Click事件]E --> F[执行业务]

weixin_33239721的博客 839

C#写的推箱子游戏源码,带关卡编辑器、操作回放和本地存档

用C#和Windows Forms开发的推箱子游戏完整源码,支持方向键移动、空格确认、Ctrl+Z撤销、Ctrl+Y重做。通关后自动记录最少步数,并生成level.way文件保存完整操作过程,可随时回放推箱路径。内置可视化关卡编辑器,能自由摆放墙体、箱子、目标点和玩家起始位置,编辑结果直接保存为地图文本格式。所有资源图片齐全(wall.bmp、box.bmp、man.bmp等),界面由多个窗体组成(Form1主游戏、Form2编辑器、Form3回放窗口),项目结构清晰,含.csproj配置、资源文件和设置文

ppp33的博客 225

MFC动态生成工具栏

文章来自:http://hi.baidu.com/cqmking/item/1ab1a6e049df04aece2d4f71 MFC动态生成工具栏 //头文件定义,状态栏等其他窗口略 CToolBar    m_wndToolBar; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |

探索。。。发现。。。 1331

继承CToolBar自绘具有真彩按钮的工具栏

继承了CToolBar类实现的工具栏,可以显示真彩图标的按钮,是学习VC界面编程的一个比较好的例子。

使用VS2010的CMFCToolbar实现真彩色工具栏

从VC2008的SP1开始,新加入了很多MFC控件,其界面效果虽然比不上WPF,但与之前的控件相比,也已经是飞越了。无奈目前大家对它的研究还是比较少,虽然自带了一些示例程序,仍然不能满足开发的方方面面。貌似C++的高手更喜欢旧版的MFC控件,这也难怪,新版的控件效果,用旧版的也能

开心果壳 1万+

画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU

前言,什么是STM32F030F4P6 STM32目前最便宜的芯片之一应该就是这一块,STM32F030F4P6,这一个芯片没有USB,但是其他都有,引脚少,价格低廉,如果找不到原厂,可以买替代的国产芯片,性能也一样。 不管怎么样也是Cortex-M0,比8bit和16bit的性能都强,总的来说就是低价,引脚少,体积小的同时,还容易开发,有很多模拟输入可玩,还有SPI,硬件I2C等等 所以,这一款MCU真的是从理论来说又便宜又好用,非常适合把玩。 画个板,最小系统 STM32F030其..

arenascat的博客 2万+

有限状态机FSM详解(一)

有限状态机在维基百科中的解释是: 有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 至于为什么要学FSM,FSM可以把模型的多状态、多状态间的转换条件解耦。可以使维护变得容易,代码也更加具有可读性,也更加艺术。 理解有限状态机首先需要理解整个模型。我们把灯的开关作为示例,...

benjonc的博客 5万+

GEE APP:基于Sentinel-2遥感数据分析可视化和下载的交互式应用

本文详细解析了一个基于Google Earth Engine平台的Sentinel-2遥感数据处理工具。该工具采用模块化设计,提供智能数据过滤系统(云量阈值30%)、四种专业可视化方案(真彩色、NDVI、地质分析和植被红外),以及优化的交互体验。核心技术特点包括异步数据处理和分层过滤机制,确保查询效率与结果质量。工具默认以欧洲中部为分析区域,适合多样化土地利用研究,通过直观界面将复杂遥感流程简化,特别适用于科研展示和应用分析。

此星光明博客 1415

【Linux】实际项目应该如何完成?--安防监控系统项目的总结

到目前为止我也做个5、6个嵌入式项目,但以往都是从零开始自己做,也就是毫无计划,想到那里做那里,有想法就会去实现,就这样导致我碰到了很多坑,也消耗了我许多时间,当然,不是说这样不好,因为在其中我也得到了一个很好的锻炼与练习,但是这不适用于在工作中去这样做。...

修成真的博客 6725

极简配置:Ghostty-config可视化终端美化完全手册

还在为复杂的终端配置文件而头疼吗?Ghostty-config将彻底改变你的终端配置体验。这款专为Ghostty终端设计的可视化配置工具,让你无需编写一行代码就能打造个性化终端环境。告别繁琐的手动编辑,通过直观的界面实时调整设置、预览效果并导出配置文件,5分钟即可完成专业级终端美化。 ## 为什么传统终端配置如此痛苦? 每个开发者都曾经历过这样的困扰:想要调整终端颜色主题,却要在配置文件中寻找

gitblog_00964的博客 511

OpenResty无损升级内嵌nginx版本0DAY漏洞

OpenResty无损升级内嵌nginx版本,nginx

qq1071643762的博客 6904

新手必看:如何用T265和ROS实现无人机室内精准定位(附PX4参数配置)

本文详细介绍了如何使用Intel Realsense T265和ROS实现无人机室内精准定位,包括硬件准备、ROS数据流架构设计、PX4参数配置及系统验证。特别针对视觉SLAM技术在室内环境中的应用,提供了从零搭建到进阶优化的全流程解析,适合无人机开发新手快速上手。

weixin_30642561的博客 404

告别命令行恐惧!用Ubuntu 16.04自带的Remmina远程桌面,像操作本地电脑一样管理你的服务器

本文介绍如何利用Ubuntu 16.04自带的Remmina远程桌面工具,通过图形化界面轻松管理服务器,告别命令行操作的复杂与恐惧。详细指南包括安装、连接设置、书签管理及性能优化,帮助用户像操作本地电脑一样高效管理远程服务器。

weixin_29295541的博客 233

8-阿里云服务器 ECS配置R及Studio Server

步骤概览:(首先要明确自己的系统然后进行安装)

hx2024的博客 1570

基于PSoC 4与NeoPixel的音频频谱可视化系统设计与实现

数字信号处理(DSP)是嵌入式系统实现智能感知与交互的核心技术之一,其核心原理是通过算法对模拟信号进行采样、变换与分析,提取有价值的信息。在音频处理领域,频谱分析能够将时域声音信号分解为不同频段的能量分布,为声音可视化、均衡调节等应用提供数据基础。IIR滤波器作为一种高效的数字滤波器,通过递归计算实现特定频带的信号提取,相比FFT在固定频点分析场景下具有计算量小、实时性高的优势,尤其适合资源受限的微控制器(MCU)。结合WS2812B(NeoPixel)这类智能LED,其单线控制协议极大简化了多LED系统的

weixin_42565402的博客 541

Unreal Engine开发:多人联机与网络同步_延迟补偿与预测

通过延迟补偿和预测技术,我们可以显著减少网络延迟对多人在线动作游戏的影响,提升玩家的体验。延迟补偿主要在服务器端实现,通过回溯时间点来更准确地处理输入和事件。预测技术主要在客户端实现,通过预先计算玩家的动作结果来减少延迟感。结合这两种技术,可以实现更平滑、更公平的多人游戏体验。

chenlz2007的博客 1191

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-知识图谱制作、使用、dify集成

本文探讨了在构建本地RAG(Retrieval-Augmented Generation)系统时,如何通过引入知识图谱来增强系统的知识理解能力。传统的向量数据库和嵌入模型虽然能处理语义匹配,但无法有效捕捉知识间的关联性。知识图谱通过“实体-关系-属性”的结构化表示,能够更好地支持推理、推荐和多跳问答等高级功能。文章详细介绍了知识图谱的基本概念、制作思路,以及如何使用Neo4j图数据库进行知识图谱的构建和查询。通过实例展示了从PDF文件解析到知识图谱入库的全过程,强调了知识图谱在提升RAG系统性能中的重要作用

少说,多做 563

基于LPC5460x与LVGL的嵌入式GUI开发实战:从可视化设计到性能优化

嵌入式图形用户界面(GUI)开发是提升嵌入式产品交互体验的关键技术。其核心原理在于通过图形库在资源受限的微控制器(MCU)上高效渲染图形元素并处理用户输入。LVGL作为一款开源、轻量且功能强大的嵌入式图形库,为开发者提供了跨平台的解决方案,显著降低了开发门槛和成本。结合NXP的GUI Guider可视化设计工具,可以实现“所见即所得”的界面布局与代码生成,极大提升了开发效率。在工程实践中,高性能MCU(如内置LCD控制器和SDRAM接口的LPC5460x系列)与合理的**内存管理**(如使用外部SDRAM设

weixin_31902781的博客 249

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

从RGB到YIQ:矩阵变换与色彩空间可视化的入门实践

在数字图像处理与计算机图形学中,色彩空间转换是核心基础技术之一。其原理本质上是线性代数中的矩阵变换,通过一个转换矩阵,可以将颜色数据从一种表示(如RGB)映射到另一种表示(如YIQ)。这种变换不仅具有数学上的严谨性,更蕴含着重要的工程价值,例如在YIQ空间中实现亮度与色度分离,为早期电视广播的带宽压缩与黑白兼容提供了解决方案。理解矩阵如何作为线性变换算子,以及如何通过三维可视化(如颜色立方体)直观呈现变换效果,是掌握图像处理底层原理的关键。本文以RGB到YIQ的转换为例,结合MATLAB代码,系统演示了从构

culh2177的博客 453

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

QT做的组态界面,果然比WinCC好看不止一点点!

组态软件(SCADA/HMI)是工业控制系统的"大脑界面",负责监控和控制生产过程。它通过图形化方式展示设备状态、工艺参数和报警信息,帮助操作人员管理和优化生产流程。Qt框架在组态软件界面开发中展现出的优势已经远远超出视觉美观的范畴。其现代化的技术架构、强大的图形处理能力、出色的跨平台特性以及高效的开发模式,使其成为工业4.0时代组态软件开发的理想选择。虽然WinCC在稳定性和生态系统方面仍有其优势,但Qt在用户体验、开发效率和未来适应性方面明显领先。

2401_82617164的博客 2919

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: DLL实用技巧——namespace, 生成后事件
下一篇: C++虚函数的实现细节、虚析构函数 汇编解析
Yao-debo
博客等级 码龄23年 17粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值