前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

pb热键(快捷键)实现 - PowerBuilder论坛 - 51CTO技术论坛_中国领先的IT技术社区 【博客移动端上线啦,让手机阅读更方便】如果您有建议请告知我们,您的鼓励是我们前行的动力。 参与体验还有机会获得精美奖品一件噢~马上参加>> 0 51CTO首页 技术频道 51CTO旗下网站 地图 社区: 学院 论坛 博客 下载 更多 网络 安全 开发 数据库 服务器 系统 虚拟化 云计算 嵌入式 移动开发 51CTO.COM CIOage.com WatchStor.com HC3i.cn 灵客风LinkPhone 家园 学院 博客 论坛 下载 自测 门诊 周刊 读书 技术圈 发新话题 发布投票 发布商品 发布悬赏 发布活动 发布辩论 发布视频 --> -->-->论坛首页 版主墙 最有价值午饭 最新热帖 版主推荐 精华主题 经典版首页 技术公开课 视频课程 网络、安全 网络管理 网络工程展 企业级安全 系统攻防 病毒查杀 企业技术 思科技术 H3C技术 华为技术 操作系统 WinServer PC应用 Linux Office 移动开发 Android开发 iOS开发 WinPhone开发 数据库开发 MS-SQL Server Oracle Mysql DB2 开发语言 C/C++ .NET Java PHP Web开发 服务器 Exchange 服务器 虚拟化 Lync 考试认证 思科认证 H3C认证 微软认证 华为认证 软考 午饭大本营 招聘专区 职场人生 挨踢生活 活动专区 下载中心 站务管理 版主招募 公告/帮助 建议/反馈 市场合作 版主茶馆 查看所有版块>> 论坛首页 开发语言 PowerBuilder论坛 pb热键(快捷键)实现 我的帖子 个人中心 设置 你当前的位置 : 论坛首页 PowerBuilder论坛正文 论坛地图 网络技术 :网络管理论坛网络工程展安全技术 :ISA/TMG论坛企业级安全论坛系统攻防论坛病毒查杀论坛企业技术 :思科技术论坛H3C技术论坛华为技术论坛操作系统 :winServer论坛Linux论坛PC应用论坛Office论坛Unix论坛AIX论坛开发语言 :C/C++论坛.Net论坛Java论坛Delphi论坛PowerBuilder论坛WEB开发 :Web开发综合讨论区Php论坛Asp论坛HTML5论坛数据库开发 :MS-SQL Server论坛Oracle论坛MySQL论坛DB2论坛移动平台 :Android开发论坛iOS开发论坛WinPhone开发论坛Symbian论坛服务器 :Exchange论坛服务器论坛Lync虚拟化论坛考试认证 :思科认证论坛H3C认证论坛微软认证论坛软考论坛华为认证午饭大本营 :职场人生挨踢生活活动专区最有价值午饭俱乐部下载中心论坛招聘专区站务管理 :版主招募公告建议/求助市场合作 论坛首页 开发语言 PowerBuilder论坛 我的帖子 个人中心 设置 返回列表 积分225 当前离线 注册时间2007-8-17 最后登录2007-8-24 论坛详细资料 查看:3758|回复:4 yuanpengfei 助理工程师 帖子43 精华0 无忧币20 发短消息 家园好友 他的博客 他的资源 pb热键(快捷键)实现 [复制链接] 收藏 --> 发表于 2007-8-23 11:39 | 来自 51CTO网页 [只看他] 楼主 在PB中实现热键的方法 如果你能在你的应用程序中添加一些热键,就可以加快用户的操作速度,特别是对那些熟练的操作人员, 他们特别欢迎快捷键的操作方式。在不少大型应用软件中,用户可以通过使用Ctrl+Alt+F5之类的组合键来方便地进行功能切换和处理。那么,我们在用 PowerBuilder开发应用程序时,怎样在其中实现需要的热键功能呢?下面笔者就根据自身的经验,介绍两种实用的方法。 第一种方法: 该方法可以实现:无论何时,只要用户按下热键,都将触发窗口中的事件。 1.声明 API的外部函数 FUNCTION Integer GlobalAddAtom(ref string lpString) LIBRARY "kernel32.dll" ALIAS FOR "GlobalAddAtomA" FUNCTION ulong RegisterHotKey(ulong hwnd,ulong id,ulong fsModifiers,ulong vk) LIBRARY "user32.dll" //hwnd参数用于指定使用本热键的窗口句柄,id参数用于指定一个惟一的ID,fsModifiers参数指明辅助键值(Alt、Ctrl、Shift等),vk参数指明虚拟键的ASCII码。 2.对常量赋初值 Public: constant integer MOD-ALT = 1 constant integer MOD-CONTROL = 2 constant integer MOD-SHIFT = 4 3.利用代码在系统中注册要使用的热键 //在窗口的Open事件中 long ll-RC string ls-str ls-str = "My atom ID" atomid = GlobalAddAtom(ls-str) //得到惟一的ID,保证不和其他应用程序发生冲突 ll-RC = RegisterHotKey(Handle(this), atomid, MOD-ALT + MOD-CONTROL, 65) // 65为‘A’,注册的热键为Ctrl+Alt+A if ll-RC = 0 then messagebox("错误","错误信息") end if 4.编写按下热键时的处理程序 //在窗口的Other事件中 IF wparam = atomid THEN //在这里编写处理程序 END IF 第二种方法: 1.声明 API的外部函数 function long SendMessageA(long lhWnd,uint uiMsg,long lwMsg,long lwParam) library ′user32.dll′ 2.对常量赋初值 Public: Constant Long WM-SETHOTKEY=50//设置热键信息值 Constant Long HK-MYHOTKEY=1648 //热键参数值 Constant Long SC-HOTKEY=61776//PB中的热键信息 其中,HK-MYHOTKEY不是固定的,它根据用户的需要而定。它的具体值的确定方法是:高8位字节与低8位字节组成16位字节,然后将它换算成十进制数,即得到所需的HK-MYHOTKEY值。高8位字节值为一些辅助键(Control、Alt、Shift等),低8位字节为使用键的ASCII码。如 果我们要使用Ctrl+Alt+A作为热键,则A=65,转换成十六进制为41,Ctrl+Alt=2+4=6,转换成十六进制仍然是6,两则组合即为 641,再重新转换回十进制得到1601;同样,如果我们用Ctrl+Alt+F1作为热键,F1=112,可以得到HK-MYHOTKEY值应为 1648。 3.利用代码告诉窗口我们的热键 //在窗口的Open事件中 long ll-RC ll-RC = SendMessageA(Handle(this), WM-SETHOTKEY, HK-MYHOTKEY, 0) if ll-RC 1 then messagebox("错误","错误信息") end if 4.编写按下热键时的处理程序 //在窗口的Other事件中 IF wparam = SC-HOTKEY THEN //在这里编写处理程序 END IF 更多 楼主关注 PB 6.5 用户账户密码加密问题 PB新入手人员实例详细解析,一步步教你搭建简单实例 一个日程安排的PB源代码 谁有PB8中文版 用PowerBuilder制作的一个小程序 怎么实现pb在Excel表中 版主推荐 如何当数据库的更新时,及时做出反映啊? PowerBuilder中的游标的问题 请教OLE DB连接数据问题 数据窗口中计算域条件表达式如何写? 如何在同一个对象文件下,建立多个库文件,请指点迷津! 求助 窗口关闭错误 无标题文档 干货:IT技术学习路线图 | 2013年度杰出版主评选 | 工信部弱电项目经理资格认证 积分82 当前离线 注册时间2007-7-23 最后登录2011-6-18 论坛详细资料 andkylee 新新人类 帖子26 精华0 无忧币11 发短消息 家园好友 他的博客 他的资源 发表于 2007-9-10 09:32 | 来自 51CTO网页 [只看他] 沙发 在other事件里 应该是message.wordparm 而不是wparam. 无标题文档 干货:IT技术学习路线图 | 2013年度杰出版主评选 | 工信部弱电项目经理资格认证 积分428 当前离线 注册时间2007-9-5 最后登录2008-9-18 论坛详细资料 yyl4808 初级工程师 帖子275 精华0 无忧币20 发短消息 家园好友 他的博客 他的资源 发表于 2007-9-10 13:14 | 来自 51CTO网页 [只看他] 板凳 ding 无标题文档 干货:IT技术学习路线图 | 2013年度杰出版主评选 | 工信部弱电项目经理资格认证 积分5580 当前离线 注册时间2006-6-22 最后登录2013-9-7 论坛详细资料 ribut9225 荣誉会员 帖子6041 精华2 无忧币7717 发短消息 家园好友 他的博客 他的资源 发表于 2007-9-10 15:09 | 来自 51CTO网页 [只看他] 地板 dddddddddddddd 无标题文档 干货:IT技术学习路线图 | 2013年度杰出版主评选 | 工信部弱电项目经理资格认证 积分1 当前离线 注册时间2008-9-10 最后登录2010-4-6 论坛详细资料 szpb 新新人类 帖子2 精华0 无忧币5 发短消息 家园好友 他的博客 他的资源 发表于 2008-9-10 08:22 | 来自 51CTO网页 [只看他] 5# dd 无标题文档 干货:IT技术学习路线图 | 2013年度杰出版主评选 | 工信部弱电项目经理资格认证 ‹‹ 上一贴:PowerBuilder-dtx.chm | 下一贴:内存管理源码 ›› 返回列表 查看积分策略说明 选项 禁用 URL 识别 禁用 表情 禁用 Discuz!代码 使用个人签名 接收新回复邮件通知 标题 快速回复主题 您需要登录后才可以回帖 登录| 立即注册 关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 | 意见反馈 | 网站地图 Copyright©2005-2013 51CTO.COM 本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com