您好,欢迎来到99网。
搜索
您的当前位置:首页焦点问题

焦点问题

来源:99网
焦点问题

问:我有一个非模态属性表,其中的一页包含7个控件,我的问题是,如果现在焦

点在一个 编辑控件上,当我最小化窗口后又最大化,那么该控件就会失去焦点, 怎样才能恢复原状?

答:在消息WM_SHOW中这样做:

voidCPropPage::OnShowWindow(BOOL bShow, UINT nStatus) {

...

If(bShow ) {

// restore current focused control if(m_pCurFocusWnd != NULL ) { m_pCurFocusWnd->SetFocus(); } } else {

// save current focused wnd m_pCurFocusWnd = GetFocus(); }

YourBaseClass::OnShowWindow(bShow, nStatus); ... }

注意:pCurFocusWnd是一个CWnd指针,必须在构造函数中初始化为NULL;你也必须声明 对话框中的所有变量,否则调用OnShowWindow时,指针通过GetFocus()所返回的值将是 非法的。希望你能满意!

截获WIN95的函数调用

* 截获对某些系统API函数调用。

Win32程序调用外部API都是通过一个间接函数指针,修改该指针即可。

《Windows 95 System Programming Secrets》中有个APISPY32程序,有详细介绍,

象怎样访问参数,值得研究。这种方法适用于截获应用程序对系统API的调用,但

不能截获如USER32,COMCTL32等对系统函数的调用。

* 截获某一特定DLL的API。

用自己的DLL替换之,当然要知道函数的原形。MSJ Sep. 1997上有一WinInetSpy程

序截获对WININET.DLL的调用。这种方法适用于非系统DLL(也可以替换系统DLL,

但需重启动,调试较困难)。

* 非输出函数或16位函数。 找到函数地址,用JMP指令替换第一条指令。金山词霸、南极星都用这种方法。这种

方法只能截获已知函数,要保证指令替换不出错。

另外,有一个强大的软件Bounds Checker,NuMega公司出品,其一个功能就是截获API

调用。最新版本好象有用户编程接口,截获后让用户的程序接着处理。该软件已经把

所有关于API截获的事情都作了。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务