
HWND nhWnd[10];
int count;
BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam)
{
DWORD dwID ;
GetWindowThreadProcessId(hwnd, &dwID) ;
if (dwID == (DWORD)lParam && IsWindowVisible(hwnd) && GetParent(hwnd) == NULL)
{
nhWnd[count++] = hwnd;
}
return (count == 10) false : true;
}
void GetProcessTopWindows(DWORD dwPID)
{
count = 0;
EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID);
}
GetProcessTopWindows(dwPID)//dwPID进程句柄
将属于 dwPID进程的所有顶层可见窗口句柄保存到nhWnd 中 最多 10 个
我觉得应该是这样的:你的对话框一直存在,但是状态可能是隐藏的,那么在创建这个对话框的时候,你会保存这个对话框的指针。至于保存在哪里,是由你决定的。然后要在其他类中获取到这个指针的话,那么你就可以将这个类和保存对话框指针的类或者地方建立一个关系,然后就可以获取到了。
DC的句柄和窗口的句柄是不同的,不能混用。
要获取DC句柄,首先要看你在那个函数里面(有些函数有DC指针参数,有些窗口类成员函数可以直接访问DC)
举例:
CClientDC dc(this);
HDC hDC = dcGetSafeHdc();
GetDlgItem
()//只有一个参数就是你要获取的子窗口的ID,
返回值
是一个指向CWnd类的指针.该函数可以根据一个ID号获取一个对应的
对象指针
,在任何派生自CWnd类的类中都可以使用.如果你非要
句柄
的话.那就
CWnd
pWnd=
GetDlgItem(/子窗口ID/);
pWnd->m_HWnd;//得到这个子窗口的句柄
以上就是关于VC中如何获得其他进程的窗口句柄全部的内容,包括:VC中如何获得其他进程的窗口句柄、mfc如何在其他类中获取和传递指定对话框的指针或句柄、MFC中如何获取窗口句柄然后使用,内有具体函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)