求助:项目开发中遇到的问题

dngweiok 2012-08-27 03:57:39
最近在处理一个任务,任务是在已有的程序中添加帮助信息(就是气泡提示),鼠标移到窗口、控件、菜单上都要有相应的气泡提示。因为在程序中存在的对话框已经很多了,因此不可能在所有的对话框上添加ToolTip。公司是希望做成类似第三方插件的形式,尽可能少的在目前已有的代码中再插入代码。
我自己想过2个办法
1、HOOK API,类似于金山词霸那样的取词。但这个被公司PASS掉了,原因HOOK 稳定性和安全性不够。在WIN7下面还可能涉及权限问题。
2、通过WindowFromPoint获取窗口ID,再通过ID去查找提示信息。这个办法能够实现我所需要的功能。但是WindowFromPoint还能获取到本程序以外的窗口指针。这样的结果造成了程序无法识别自己本程序还是其他程序的窗口。

因此想向大家取取经,有什么可以改善的做法或者是新的实现方式,不胜感谢!!!!
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dngweiok 2012-08-28
  • 打赏
  • 举报
回复
这个是MFC的类吗?我没见过这个类,不过问题已经解决了。分享一下我的办法

//获取鼠标点下面窗口的指针
CWnd* pWnd = WindowFromPoint(&pt);
DWORD dwProcessID = 0;
//获取窗口进程ID
GetWindowThreadProcessID(pWnd->GetSafeWnd(), &dwProcessID);
//是否是当前进程ID
if (GetCurrentProcessID() != dwProcessID)

谢谢各位!
傻X 2012-08-28
  • 打赏
  • 举报
回复
楼主Cpptooltip不知道能不能解决你的问题
dngweiok 2012-08-28
  • 打赏
  • 举报
回复
首先很感谢各位给我提示,自己封装ToolTip并不能解决我面临的问题,甚至会加大工作量,因为项目里面已经存在大量的对话框,全部都是直接从CDialog类中派生出来的,因此我不可能一个个去修改每个Dialog的代码,所以想做成类似第三方插件形式。
关于1楼和4楼提出判断是否属于本程序窗口,我也曾经想到过只是没想出实现的办法。
  • 打赏
  • 举报
回复
首先要判断是否是本程序的窗口 通过窗口名称或其他方式
whucv 2012-08-27
  • 打赏
  • 举报
回复
找个tooltip类UI控件
lgstudyvc 2012-08-27
  • 打赏
  • 举报
回复
封装个自己的ToolTip类或者库
xiaohuh421 2012-08-27
  • 打赏
  • 举报
回复
WindowFromPoint还能获取到本程序以外的窗口指针。这样的结果造成了程序无法识别自己本程序还是其他程序的窗口。

你可以有一个接口,先设置本程序的窗口句柄, 然后在获取到窗口ID后,判断其窗口句柄或者其父窗口句柄是否是属于本程序窗口, 不是就忽略掉.

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧