VC弹出窗口问题(Create(UINT, CWnd*)
按照"菜鸟神迹之路"的资料.把于用VC把简单的在游戏中弹出窗口做出来了。
不过有些个问题需要解决。
1、在INSTALLHOOK中。使用Create(UINT,CWnd*)建立了目标窗口以后,在没有调用ShowWindow之前。对窗口对象的所有操作都是非法的。但是只要使用过ShowWindow(SW_SHOW)之后。就会执行InitDialog,这个时候哪怕是执行了SW_HIDE,对窗口的操作也会正常使用的。因为一般用来进入的时候,是不会首选按热键弹出窗口的。即这个时候在没按热键之前对窗口的操作没有办法,有什么办法能让窗口Create以后同时执行InitDialog呢。
2、VC比较恶心的是TAB控件,直接用他的TAB页,所有控件都堆在一起了根本没有办法操作。而使用CPropertySheet建立的TAB页。虽然可以解决这个问题。但同时带来新的问题,当点击窗口上的对象的时候。执行的是CPropertySheet的一个子对象CPropertyPage里边的。如果要对父窗口操作(及实际的主窗口,所有数据都以这为主),我试了用GetSafeOwner()->m_xxx,他不认,我自定义的那些成员。
3、使用Create的时候目标游戏窗口必须是当前窗口。才能通过CWnd::GetForegroundWindow()获到CWnd*指针,其实这个时候咱们已经知道了目标窗口的HWND,我查了一下MSDN,查到可以用FromHandle将HWND转成CWnd*,但实际使用的时候,却会使目标游戏窗口非法操作关闭!