MFC对话框前置问题

挨踢民工 2016-12-26 04:03:49
背景:hook客户端程序clientApp,hook程序为一个对话框程序
目的:在clientApp的唯一eidt控件输入交易码的时候,hook程序弹出该交易的help信息(对话框隐藏并嵌入浏览器控件,Navigate来显示帮助信息)
还有:对话框启动的时候隐藏在托盘,在defWindowProc实现

现:hook写的是一个键盘钩子dll,对话框程序是调起程序,clientApp是个全屏的
hook捕获到clientApp输入交易码后,调用Navigate后,通过SendMessage发WM_PAINT消息,在OnPaint调用ShowWindow()和UpdateWindow();

问题:
程序执行的时候,如果第一次输入交易码,能弹出对话框,显示帮助信息,
但是再次输入交易码后,没弹出对话框,点任务栏显示对话框确实也根据交易码获取了帮助信息,但没弹到前面来

已做:
一开始是捕获交易码后发WM_NCPAINT,然后在defWindowProc中ShowWindow(),试了SetActiveWindow(),SetForegroundWindow(),只在任务栏变亮,但
是未在clientApp界面上显示(第一次都是成功的,就是第二次不成功显示),点击任务栏显示正确。然后查了资料,说WM_NCPAINT是重绘非客户区,然后我换WM_PAINT,并在OnPaint()
中显示,还是一样的,第一次能弹,第二次不行!!!!
请高手解惑(PS: 第一次用MFC做这个,对话框底层调用流程不是很理解)

(SetWindowPos Top不行,用户操作的时候,当输交易码的时候,帮助信息对话框应该被覆盖了,输完交易码回车的时候弹出)
...全文
371 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jackxan 2017-01-08
  • 打赏
  • 举报
回复
这种问题最好是用show hide来搞吧

15,979

社区成员

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

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