#include <Windowsh>
#include <vector>
using namespace std;
//用于EnumWindows的回调函数
BOOL CALLBACK EnumProc(HWND hwnd,LPARAM lparam)
{
vector<HWND> pvec = (vector<HWND>)lparam;
pvec->push_back(hwnd);
return TRUE;
}
void main()
{
vector<HWND> vec;
EnumWindows(EnumProc,(LPARAM)&vec);
}
这个是win32控制台程序项目里写的,如果要在MFC下的话,只需包含
#include <vector>并using namespace std;
EnumProc定义在前面,按钮响应函数里添加main函数里的那两句就可以了。
我这里测试获取到了407个句柄
用GetWindow
HWND GetWindow(
HWND hWnd, // handle to original window
UINT uCmd // relationship flag
);
第二个参数设为GW_CHILD
CWnd是MFC中的一个类,其中封装了HWND,而HWND是一个句柄,代表一个windows下的窗口,CWnd实例化就可以生成一个窗口,CWnd有个成员变量m_hWnd保存了这个窗口的句柄
GetWindow第一个参数就是父窗口句柄,可以从CWnd得到,如HWND hwnd=p->m_hWnd
GetDC()的返回值是CDC 也就是说是一个指向CDC类的指针 CDC类的对象它是MFC内部为我们动态构建的, 储存的地方也就是指针指向的地方, 但是具体是在代码的哪个部分生成的, 这点我们不得而知 不过需要注意的一件事情是, 用GetDC()获取的CDC对象, 必须用ReleaseDC()将其释放 如:ReleaseDC(GetDC());
至于获得CDC指针的用处有什么, 那么在这里是不可能一言而尽了 所以GUI函数都在它里面 因此只能是用到哪里, 学到哪里, 不可能全部学会
什么叫做“打开窗口”?
当你获取到一个有效的HWND,说明该窗口以存在,你可以通过SendMessage给窗口发送消息,也可以通过FromHandle获取窗口指针得到一个CWnd。
先在对应的源文件中包含Resourceh头文件,然后在按钮的点击事件处理程序中添加以下代码: CWnd pButton = GetDlgItem(IDC_BUTTON1); HWND hButton = pButton->m_hWnd;hButton就是按钮控件的句柄。将GetDlgItem的参数换成控件的ID,就可以获取不同控件的句柄。
下面是我自己整理的:
23如何访问MFC的指针,句柄
CWND都有指针和句柄
1利用FromHandle将句柄转换为指针返回
CBrush pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//获得特定画刷画笔字体和画板的句柄
2获取指针GetParent(),GetDesktopWindow
//app中存有其他3类的指针
3利用GetActiveView()等获得当前活动的指针
CMenu2View pView=(CMenu2View)GetActiveView();
// 包含View头文件
4平台SDK GetWindow(hwnd,uCmd)找窗口与之有关系的各个窗口句柄
5获得实例CWINAPP中有
theAppm_hInstance
AfxGetApp()->m_hInstance//全局函数获得实例
AfxGetInstanceHandle();//全局函数获得实例
6CWND::GetDescendantWindow(ID,false)
获取子孙窗口的指针
1、GetWindowLong是获得有关指定窗口的信息,这个信息包括窗口扩展风格、标识、父句柄、风格等;通过第二个参数在控制的
2、GWL_EXSTYLE
获得扩展窗口风格。
GWL_HINSTANCE
获得应用事例的句柄。
GWL_HWNDPARENT
如果父窗口存在,获得父窗口句柄。
GWL_ID
获得窗口标识。
GWL_STYLE
获得窗口风格。
GWL_USERDATA
获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。
GWL_WNDPROC
获得窗口过程的地址,或代表窗口过程的地址的句柄。
同样SetWindowLong也需要通过参数设定不同的信息;
以上就是关于50分,如何获取桌面所有窗口的句柄全部的内容,包括:50分,如何获取桌面所有窗口的句柄、如何获得子窗口、C++:CWnd下GetDC()函数,获取了什么存在哪里等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)