我想C++在"开始">"运行"上创建一个按钮,但是当我这样做时,它不会发出信号事件?
对不起,我看到你没有得到这个问题.
好的,基本上当你创建一个按钮时CreateWindowEx(); 我想这样做,但是SetPArent我已经完成了一个不同的窗口,现在按钮不起作用,所以当从Run窗口单击它时,我需要我的程序才能获得!
是的,你拥有它,但它不会让按钮成为它点击我的程序时遇到的问题,因为它不再属于它了!
您需要将Windows中已知的古老但仍然支持的技术应用为子类化 ; 它很好地解释这里(15岁的文章,不过还是挺有效;-).正如本文所说,
子类化是一种允许应用程序拦截发往另一个窗口的消息的技术.应用程序可以通过拦截针对另一个窗口的消息来扩充,监视或修改窗口的默认行为.
你需要"实例子类化",因为你只对一个窗口感兴趣(你的新按钮,或者你SetParent编辑新按钮的那个); 如果您决定子类化属于另一个进程的窗口,您还需要使用本文中介绍的注入技术,例如,将DLL注入系统进程并使用WH_CBT钩子监视事件等.但是我认为即使您将按钮放在SetParent属于不同进程的窗口中,也可以将按钮保留在自己的进程中,在这种情况下,您可以完全在自己的进程中进行实例子类化,如果可行的话,这更简单.
"超类"是"子类化"的替代方法,也在文章中进行了解释,但与实例子类化相比,它似乎没有提供许多优点(尽管它可能与全局子类化相比......但是,这不是你需要的无论如何这里).
你会在这里,这里和这里找到关于这些主题的其他有趣的文章(为子类化开发一个大的,丰富的C++库 - 但是,也显示了一个基于你可能更喜欢的钩子的简单方法).每篇文章都有不同的立场和代码示例,所以我认为有很多可以帮助您找到适合您特定需求的思维模式和代码!
| 归档时间: |
|
| 查看次数: |
349 次 |
| 最近记录: |