【求助】如何获得本窗口的下面的窗口的句柄 我用GetNextWindow的方法发现必须要点击那个窗口,不然不能直接设置焦点到本窗口的下面那个窗口有没有其他更好的方法可以直接找到下面的那个窗口的句柄 或者 直接焦点设置到本窗口下面的那个窗口 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FindWindow用spy++去查窗口类名caption不是很靠谱 #include <vector>using namespace std;vector<HWND> vec;BOOL CALLBACK EnumProc(HWND hWnd, LPARAM lParam){ if(::IsWindowVisible(hWnd)) { vec.push_back(hWnd); } return TRUE;}void CXXDlg::OnOK() { // TODO: Add extra validation here EnumWindows(EnumProc, NULL); HWND hWnd = NULL; for(vector<HWND>::const_iterator iter = vec.begin(); iter != vec.end(); iter++) { if(GetSafeHwnd() == *iter && (++iter) != vec.end()) { hWnd = *iter; break; } } if(hWnd) {#define MAX_BUFFER 256 TCHAR buf[MAX_BUFFER] = {0}; ::GetWindowText(hWnd, buf, MAX_BUFFER); AfxMessageBox(buf); }} CWnd::GetNextWindow()::GetNextWindow(m_hWnd,GW_HWNDNEXT);不知道为什么,我发现我这样老是取不到Z order 下面的窗.你要设焦点到下面的窗,直接发送一个 切换 的组合键 keybd_event(VK_MENU,0,0,0); keybd_event(VK_TAB,0,0,0); keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);试过可以凑合. 9楼,能解释一下 if(GetSafeHwnd() == *iter && (++iter) != vec.end()) { hWnd = *iter; break; }这个的意思吗?是什么原理找到最上面的下一个窗的啊? 加班俩月了。。散分~ 对话框的编辑框的问题... 已经得到WMV文件DATA以及后面的数据,如何生成一个符合DATA部分的WMV头 [求助]MFC编程里面一个SendMessage的问题? 在RichEditCtrl中,如果我想將顯示和數据分開,但是又要同步,怎做呢?謝謝! 打印机能够被独占吗? 如何实现IE工具栏上的后退按钮?(后面带有一个下拉的小箭头) 在线求教:ADO函数SafeArrayGetUBound各个参数的意义 为什么不能在MFC对话框上的复选框上添加变量?(VS2003) 有个mpeg的解压函数库,谁能帮我看看怎么用? UDP传送文件速率如何提高速率 速度接分~!
用spy++去查窗口类名
caption不是很靠谱
#include <vector>
using namespace std;vector<HWND> vec;BOOL CALLBACK EnumProc(HWND hWnd, LPARAM lParam)
{
if(::IsWindowVisible(hWnd))
{
vec.push_back(hWnd);
}
return TRUE;
}void CXXDlg::OnOK()
{
// TODO: Add extra validation here
EnumWindows(EnumProc, NULL); HWND hWnd = NULL;
for(vector<HWND>::const_iterator iter = vec.begin(); iter != vec.end(); iter++)
{
if(GetSafeHwnd() == *iter && (++iter) != vec.end())
{
hWnd = *iter;
break;
}
}
if(hWnd)
{
#define MAX_BUFFER 256
TCHAR buf[MAX_BUFFER] = {0};
::GetWindowText(hWnd, buf, MAX_BUFFER);
AfxMessageBox(buf);
}
}
::GetNextWindow(m_hWnd,GW_HWNDNEXT);
不知道为什么,我发现我这样老是取不到Z order 下面的窗.你要设焦点到下面的窗,直接发送一个 切换 的组合键
keybd_event(VK_MENU,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
试过可以凑合.
if(GetSafeHwnd() == *iter && (++iter) != vec.end())
{
hWnd = *iter;
break;
}
这个的意思吗?是什么原理找到最上面的下一个窗的啊?