mfc获得窗口句柄
2015-11-27 15:09
357 查看
API中的::SetTimer()原型是这样的:
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
在CWnd类的继承类中,CWnd::SetTimer()默认传递了一个参数:HWND;而线程函数或者是全局函数,或者是静态成员函数,没有继承CWnd的this指针,不能直接调用;
将原来写的一个串口程序(采用定时器SetTimer(1,500,NULL))改成用线程来实现,线程函数不属于对话框类,所以需采用定时器的完整形式:SetTimer(hwnd,1,500,NULL)形式,程序所在窗口类的句柄hwnd的获取成为关键问题,采用CWnd*
pWnd=AfxGetMainWnd(); HWND hwnd=pWnd->GetSafeHwnd();即可实现
MFC中获取各个窗口的句柄
1、获取主窗口句柄
CWnd *pwnd=AfxGetMainWnd();//<==>CWnd *pwnd=AfxGetApp()->GetMainWnd();
HWND hwnd=pwnd->GetSafeHwnd();
2、子窗口句柄:
CWnd *pwnd=FindWindow(WindowName,NULL);//WindowName是子窗口的名字_T(“子窗口”)
HWND hwnd=pwnd->GetSafeHwnd();
3、获取控件句柄:
HWND hwndctrl=::GetDlgItem(mainHwnd,IDC_TREE1);
4、获取最上层窗口的句柄:
HWND mainHwnd=::GetForegroundWindow();
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
在CWnd类的继承类中,CWnd::SetTimer()默认传递了一个参数:HWND;而线程函数或者是全局函数,或者是静态成员函数,没有继承CWnd的this指针,不能直接调用;
将原来写的一个串口程序(采用定时器SetTimer(1,500,NULL))改成用线程来实现,线程函数不属于对话框类,所以需采用定时器的完整形式:SetTimer(hwnd,1,500,NULL)形式,程序所在窗口类的句柄hwnd的获取成为关键问题,采用CWnd*
pWnd=AfxGetMainWnd(); HWND hwnd=pWnd->GetSafeHwnd();即可实现
MFC中获取各个窗口的句柄
1、获取主窗口句柄
CWnd *pwnd=AfxGetMainWnd();//<==>CWnd *pwnd=AfxGetApp()->GetMainWnd();
HWND hwnd=pwnd->GetSafeHwnd();
2、子窗口句柄:
CWnd *pwnd=FindWindow(WindowName,NULL);//WindowName是子窗口的名字_T(“子窗口”)
HWND hwnd=pwnd->GetSafeHwnd();
3、获取控件句柄:
HWND hwndctrl=::GetDlgItem(mainHwnd,IDC_TREE1);
4、获取最上层窗口的句柄:
HWND mainHwnd=::GetForegroundWindow();
相关文章推荐
- QT:QBitArray
- SQL Server ->> Transparent Data Encryption(透明化数据加密)
- 今天开始写自己的博客
- IE6,7,8,9中H5属性placeholder不兼容问题
- 使用Java开发实现OAuth安全认证的应用
- poj1014数据很奇怪DISCUSS更奇怪
- SQL Server 2008R2 hierarchyid的使用方法(父子节点、上下级处理)
- 十秒钟解决VMware卸载不干净问题
- iOS开发之AFNetworking图片上传
- 线程在WPF中的使用
- Android Studio Gradle project sync failed
- hdu 4597 Play Game(区间dp,记忆化搜索)
- LeetCode:Excel Sheet Column Title
- GLib库安装与简析
- xheditor编辑器上传截图图片抓取远程图片代码
- jQuery - AJAX load()方法
- SVG+CSS3 简单线条动画
- 详解拷贝构造函数
- php手记-set_include_path和get_include_path用法详解
- 索引碎片整理