VC对话框添加工具栏

简介:

在VC对话框中添加工具栏,要分为如下几步操作。

1、在资源视图中添加toolbar类资源,在工具栏上添加按钮,并命名ID:ID_BTN1,ID_BTN2

2、对话框头文件中,添加变量CToolBar  m_ToolBar;

3、在对话框的OnInitDialogh函数中添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
// TODO: 在此添加额外的初始化代码  
     if ( !m_ToolBar.CreateEx( this , TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | 
         CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ) ||    
         !m_ToolBar.LoadToolBar(IDR_TOOLBAR1))    
     {    
         TRACE0( "未能创建工具栏\n" );    
         AfxMessageBox(_T( "未能创建工具栏\n" ));    
         return  FALSE;       // 未能创建    
     }    
     m_ToolBar.ShowWindow(SW_SHOW);    
     //控件条定位    
     RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

4、添加提示消息汽泡
   添加反射消息:ON_NOTIFY_EX_RANGE(TTN_NEEDTEXT, 0, 0xffff, OnToolTipText)

头文件中添加消息函数声明:

1
afx_msg  BOOL  OnToolTipText( UINT , NMHDR* pNMHDR,  LRESULT * pResult); //汽泡提示

在CPP文件中添加函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BOOL  CTestDLLDlg::OnToolTipText( UINT , NMHDR* pNMHDR,  LRESULT * pResult)  
{  
     TOOLTIPTEXT   *pTTT=(TOOLTIPTEXT*)pNMHDR;      
     UINT   uID=pNMHDR->idFrom;      // 相当于原WM_COMMAND传递方式的LOWORD(wParam),
                                   //在wParam中放的则是控件的ID。    
   
     if (pTTT->uFlags  &  TTF_ABSOLUTE)      
         uID=::GetDlgCtrlID(( HWND )uID);       
     if (uID==NULL)       
         return    FALSE;      
     switch (uID)    
     {      
     case  ID_BTN1:    
         pTTT->lpszText= _T( "OK" );      
         break ;    
   
     case  ID_BTN2:    
         pTTT->lpszText= _T( "hello" );      
         break ;    
     }    
     return  TRUE;    
}

'











本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1968315  ,如需转载请自行联系原作者





相关文章
|
11月前
|
人工智能 自然语言处理 搜索推荐
《人工智能在鸿蒙元宇宙中的应用:数字鸿沟的加剧还是弥合》
在科技飞速发展的当下,鸿蒙元宇宙与人工智能的融合成为热门话题。这一融合带来诸多机遇和创新,但也引发对数字鸿沟加剧的担忧。技术与设备门槛、数字素养差距及数据隐私问题可能导致经济条件较差地区的人们难以享受先进体验,从而拉大数字鸿沟。然而,通过增加教育与培训机会、普及个性化体验以及促进经济发展与就业,可以有效弥合这一差距。政府、企业和教育机构应共同努力,确保技术发展造福更广泛人群,实现数字世界的公平与包容。
276 16
|
NoSQL Java Redis
秒杀抢购场景下实战JVM级别锁与分布式锁
在电商系统中,秒杀抢购活动是一种常见的营销手段。它通过设定极低的价格和有限的商品数量,吸引大量用户在特定时间点抢购,从而迅速增加销量、提升品牌曝光度和用户活跃度。然而,这种活动也对系统的性能和稳定性提出了极高的要求。特别是在秒杀开始的瞬间,系统需要处理海量的并发请求,同时确保数据的准确性和一致性。 为了解决这些问题,系统开发者们引入了锁机制。锁机制是一种用于控制对共享资源的并发访问的技术,它能够确保在同一时间只有一个进程或线程能够操作某个资源,从而避免数据不一致或冲突。在秒杀抢购场景下,锁机制显得尤为重要,它能够保证商品库存的扣减操作是原子性的,避免出现超卖或数据不一致的情况。
335 10
|
数据可视化 数据挖掘 BI
小预算大效率!5款免费在线项目管理工具帮你轻松上手
在快节奏的工作环境中,项目管理工具成为提高团队效率的必备利器。本文推荐5款免费且强大的在线项目管理工具,包括板栗看板、Trello、ClickUp、Asana和Monday.com,帮助小团队或初创公司在有限预算下实现高效管理。这些工具不仅支持任务分配、进度跟踪,还具备团队协作和数据可视化等功能,满足不同场景下的项目管理需求。
363 7
|
存储 Go 文件存储
M.2移动硬盘打造Win To Go系统:高效分区存储文件全攻略
【10月更文挑战第12天】本文详细介绍了如何使用M.2移动硬盘制作Win To Go系统。首先,需准备合适容量与接口类型的M.2硬盘及硬盘盒,并获取Windows镜像文件和分区工具。接着,通过Rufus软件将镜像写入硬盘。文中还提供了分区策略,包括系统分区(约80-120GB)、软件分区(根据需求设定)和数据分区(剩余空间),并指导如何使用DiskGenius或Windows自带工具进行分区。最后,强调了对各分区文件的有效管理和定期备份的重要性。
1085 3
|
算法 数据安全/隐私保护 异构计算
基于FPGA的256QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了256QAM调制解调算法的仿真效果及理论基础。使用Vivado 2019.2进行仿真,分别在SNR为40dB、32dB和24dB下生成星座图,并导入Matlab进行分析。256QAM通过将8比特数据映射到复平面上的256个点,实现高效的数据传输。Verilog核心程序包括调制、信道噪声添加和解调模块,最终统计误码率。
354 0
|
API 网络架构 Python
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
225 0
|
Web App开发 前端开发 JavaScript
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
237 0
|
人工智能 自然语言处理
🚀从菜鸟到大师,一文读懂生成式大模型“提示词工程”的进阶秘籍✨
【8月更文挑战第1天】在人工智能领域,生成式大模型如GPT和DALL-E正引领着创意的新纪元。本文通过案例逐步解析“提示词工程”的精髓:从基础的直接提示,进化到富含细节与情感的进阶版本,再到结合模板与随机性的大师级应用。例如,创作环保主题文章时,从简单指示到强调个人行动与自然之美;生成印象派风格的日出海景图时,详述光线、色彩等元素。随着技巧提升,还可利用基础模板加随机提示的方式确保创意与质量并重。掌握这些秘籍,你也能驾驭AI,释放无限可能。
509 7
|
机器学习/深度学习 数据采集 开发框架
Python实战案例--车型识别app
Python实战案例--车型识别app
|
安全 Java API
阿里云登录入口
本文讲解一下阿里云登录入口