VC实现对话框置顶并获取键盘输入焦点
来源:互联网 发布:js点击超链接弹出窗口 编辑:程序博客网 时间:2024/05/29 19:19
今天遇到一个问题,另一个程序通过socket向另一个程序发送消息以将另一个程序显示在最前面,并且可以直接接受键盘消息(这里为什么直接接受,就是不用鼠标去点击,键盘事件焦点直接就这这个窗口上)。本来方法是有好几种,比如说SetActiveWindow(),SetForground等等方法,但是今天遇到的这个问题是,调用这两个方法均不能成功!
下面一个可以实现:
void CBillValidatorDlg::SetActive(HWND m_hWnd)
{
DWORD dwForeID;
DWORD dwCurID;
HWND hForeWnd = ::GetForegroundWindow();
dwCurID = ::GetCurrentThreadId();
dwForeID = ::GetWindowThreadProcessId( hForeWnd, NULL );
::AttachThreadInput( dwCurID, dwForeID, TRUE); //获取输入焦点
::SetWindowPos( m_hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE ); //设置Z-Order
::SetWindowPos( m_hWnd, HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE ); //还原Z-Order
::SetForegroundWindow( m_hWnd );
::AttachThreadInput( dwCurID, dwForeID, FALSE);
}
编程经验小结
1、在编写程序一定要注意些注释,有经验的程序都知道这一点的重要性。
2、在书写函数时,注意检测输入参数的合法性,在调用函数时注意检测函数的返回值来判断函数调用是否成功。
3、加深对系统框架重要性的认识,一个软件的系统框架没有设计好,系统的程序实现将会寸步难行以致到走不下去,重新设计框架,对于一个比较大的项目,应首先对系统实现过程中的技术难题通过demo程序的方式一一攻破,然后不要再继续写代码,应该花很大一部分时间来考虑系统的框架,当系统的框架搭建好了,系统实现就变得很简单了。
- VC实现对话框置顶并获取键盘输入焦点
- WinForm始终置顶并获取焦点
- 虚拟键盘-置顶且不会获取输入焦点的对话框
- VC扩展mfc dll中子对话框不能获取焦点问题
- vc 实现窗口置顶
- VC对话框焦点转换问题
- VC对话框焦点转换问题
- VC对话框焦点转换问题
- 弹出对话框并切换焦点
- android 对话框获取焦点问题
- Android自定义dialog并实现失去焦点,activity获取焦点的功能
- VC获取对话框指针
- 对话框置顶
- OjbectArx cad非模态对话框无法获取焦点
- MFC对话框,接受键盘输入,并显示输入文本
- vc设置焦点并起效果
- VC实现半透明对话框
- vc mfc实现dialog半透明置顶效果
- CSS3的新特性
- Java泛型介绍
- 禁用屏幕保护
- const用法详解
- 关于工作中的相关问题的看法和建议 (一)JAVA小组的调整问题
- VC实现对话框置顶并获取键盘输入焦点
- Tomcat启动分析
- sysinfo函数使用方法
- 放一段图片自定义大小调整的代码(jQuery插件)
- HTTP之Post/Get请求的区别
- 颜色的作用
- epoll使用实例说明
- 其它
- 这是个好东西啊