调用WindowsAPI显示帮助提示
导言
前一段时间,在编写程序的过程中,需要一个帮助功能按钮。这个按钮众所周知,按下按钮以后,鼠标变成带有问号的鼠标,然后点击画面上的控件,然后就回出现一个提示的文本,该处是什么含意。就好像右击“我的电脑”以后,选择属性,然后在出现的系统属性对话框中的右上角问号按钮一样。其实要实现该功能很简单,我们只需要调用C#提供的HelpProvider类就可以了,但是这里有一个问题,如果我们使用该类显示帮助,需要将窗体的HelpButton设置为True,MaximizeBox设置为False,MinimizeBox设置为False,才能使用。那么我们有什么办法,既可以让窗体有最大化最小化,又可以让我们提供帮助按钮的功能呢?
实现
我们为了实现该功能,主要的办法是我们调用了API库“user32.dll”的SendMessage函数,该函数发送了一条消息给窗体。首先我们在使用这个函数之前,需要DLLImport相关的DLL,并且定义好相关的参数,代码如下:
[DllImport( "user32.dll", CharSet = CharSet.Auto, SetLastError = false )] private static extern IntPtr SendMessage ( IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam ); private const int WM_SYSCOMMAND = 0x112; |
我们定义完毕函数以后 ,需要定义一个HelpProvider对象,该对象的作用是截断帮助的请求,并且显示相应的提示。代码如下:
private System.Windows.Forms.HelpProvider helpProvider1; helpProvider1.SetHelpString( textBox1, "http://www.shehui001.com/" );//帮助所提示的内容 helpProvider1.SetShowHelp( textBox1, true );//将帮助信息与控件绑定 |
最后我们实行帮助按钮仿真功能按钮,在点击的事件中,我们必须使用适当的参数调用SendMessage函数。代码如下:
private void btnHelp_Click( object sender, EventArgs e ) SendMessage( this.Handle, WM_SYSCOMMAND, ( IntPtr )SC_CONTEXTHELP, IntPtr.Zero ); |
转载于:https://www.cnblogs.com/yangyang8848/archive/2009/08/10/1542569.html
调用WindowsAPI显示帮助提示相关推荐
- iOS 调用支付宝 显示系统繁忙,请稍后再试(ALI10
调用支付宝 显示系统繁忙,请稍后再试(ALI10) 我们签约的是 移动支付 代码没有报错,为何老是提示显示系统繁忙 在targets 的中 info 添加 url types 添加 alisd ...
- 已解决cv2库安装后,调用函数显示黄色高亮
问题描述: 这里用一下别人的错误示范,我的已经改好了不想改回去了,上面cv2的调用函数显示黄色高亮,而且运行程序返回值是一串乱码 问题描述:进程已结束,退出代码-1073741819 (0xC0000 ...
- IDEA设置方法自动显示参数提示
IDEA设置方法自动显示参数提示 IDEA设置方法自动显示参数提示 捷键 代码写到16行之后,过了一会再去完善valueOf方法,但是Integer有好几个重载的valueOf方法,具体用哪个可以按c ...
- 织梦联动类别-地区调用不显示第三级城市的解决方法
织梦联动类别-地区调用不显示第三级城市的原因 1.附加表dede_addoninfos 或者 你的其他表中的字段nativeplace数据类型为int型,无法保存第三级城市对应的的evalue值(比如 ...
- 显示消息提示对话框(WebForm)
1: /// <summary> 2: /// 显示消息提示对话框. 3: /// Copyright (C) Maticsoft 4: /// </summary> 5: p ...
- IDEA设置取消自动显示参数提示
IDEA设置取消自动显示参数提示 最近在使用IDEA的过程中,发现方法中一直显示形参名的提示,无法选中,也无法删除,基于不同人的使用习惯不同,有的人不喜欢这种提示,我也在网上寻找各种解决方案,由于搜索 ...
- php可以调用windowsapi吗_2.如何调用WindowsApi
2.如何调用WindowsApi 在上一篇章节中 很不专业的介绍了一下WindowsApi 如果你本身就知道 那你也压根不用看 如果你本身就不知道 就算我说的再多 估计你也觉得是多余 所以还是来点实际 ...
- 加载本地json文件,并利用批处理调用Chrome显示html
加载本地json文件 1.加载本地json文件 为了调试保存在本地的json数据,需要进行读入.一般使用jQuery来进行,但需要对浏览器进行一点设置. Chrome浏览器中有一个启动选项--allo ...
- STM32中断中调用OLED显示出现OLED花屏
STM32中断中调用OLED显示出现OLED花屏 在TIM5中断处理函数中,我写了OLED显示,经过DEBUG发现程序执行到OLED显示语句的时候,OLED就会花屏. //中断服务处理函数 void ...
最新文章
- datagrid底部显示水平滚动_easyUI datagrid 横向滚动条显示问题
- NLP | 医学AI又一突破,微软开源生物医学NLP基准:BLURB
- FSMO角色以及DC修复
- IOS的UI基础02
- 1730: 数区间(线段覆盖,贪心)
- requirednew基于xml配置日志不回滚_Mybatis 系列 4:引入日志框架
- HBuilder:最快的Web开发IDE
- windows7使用Sphinx+PHP+MySQL详细介绍
- TPAMI 2022综述 | 视觉Transformer系统性测评及未来方向探讨
- mac 用户 文件夹 权限_WIN7局域网文件分权限共享设置方法
- 源码:Hadoop-3.0.3 启动过程中执行start-all.sh开始
- 二叉树创建,遍历,叶子,深度
- 关于SUSE linux
- Fiddler2介绍
- vfp 生成html,利用VFP脚本开发动态Web系统
- 直播丨易鲸捷HTAP融合型分布式数据库EsgynDB SQL编译器详解
- 金蝶云系统服务器,金蝶云星空-文件服务器配置指南
- 《Using OpenRefine》翻译~14
- 工程师笔记 | 嵌入式工程师常用软件
- 计算机excel在三维饼图改字,Excel如何一键生成饼图 Excel如何修改饼图
热门文章
- mnist数据集图片提取出来
- 理解linux time命令的输出
- VC++ MSDN中的 _beginthreadex与_endthreadex 的使用例子
- win7系统 普通管理员被删除,超级管理员被禁用。普通用户下。怎么激活administrator
- 遗传算法各Matlab工具箱简介
- 人工智能AI实战100讲(一)-机器人语义建图(上)
- kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
- java程序运行结果题_2016年关于Java编程与程序运行结果笔试题
- java字符串学习_java之字符串学习记录
- 程序员应该如何提问?