MFC中怎样获取指定窗口的句柄

如题所述

句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息、处理程序):0。获取所在类窗口的句柄:
this->m_hwnd
1。主窗口的句柄:
无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:
AfxGetMainWnd()->m_hWnd,
如:::SendMessage(AfxGetMainWnd()->m_hWnd , WM_MY_DOSOME , 0 ,(LPARAM)i);
在窗口类中
this->m_hWnd
或者this->GetSafeHwnd()

2。子窗口句柄:用FindWindow,(只要知道子窗口的名字即可)如:
 ::FindWindow(NULL,WindowsName) 
返回找到的窗口的句柄
寻找当前窗口是否在运行windowname的程序,该名字为窗口名字,如:
CWnd* pWnd=FindWindow(NULL,_T("清芝--支票机"));//

GetSafeHwnd
函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。
通过下面的例子来看其理由:

    CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
  HWND hwnd = pwnd->m_hwnd; //得到它的HWND
  这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:
  CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
  HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND

  就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL

3。获取窗口中 æŽ§ä»¶çš„句柄,用 GetDlgItem
语法为:GetDlgItem(IDC_COMBO3)->m_hWnd ï¼šå‚数为 è¯¥æŽ§ä»¶çš„ID,返回值为:CWnd* ç±»åž‹ï¼Œä½†å®ƒæ˜¯CWnd类内的函数,因此要先获取控件所在窗口的指针,如:
CString str(_T("dd"));
::SendMessage(AfxGetMainWnd()->GetDlgItem(IDC_COMBO3)->m_hWnd, WM_SETTEXT , 0 , (LPARAM)str.GetBuffer(0));

从句柄获得指针,用 FromHandle
语法:CWnd* pWnd = CWnd::FromHandle(hWnd);
获取窗口句柄(全集) vc&MFC 
获得窗口句柄:
this->m_hwnd
HWND GetForegroundWindow(VOID);
GetSafehWnd å–你程序所在窗口类的句柄
GetActiveWindow å–当前活动窗口句柄
AfxGetMainWnd å–主窗口句柄
GetForegroundWindow å–前台窗口句柄
FindWindow
EnumWindow

温馨提示:内容为网友见解,仅供参考
无其他回答

MFC中怎样获取指定窗口的句柄
获取所在类窗口的句柄:this->m_hwnd1。主窗口的句柄:无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:AfxGetMainWnd()->m_hWnd,如:::SendMessage(AfxGetMainWnd()->m_hWnd , WM_MY_DOSOME , 0 ,(LPARAM)i);在窗口类中this->m_hWnd或者this->GetSafeHwnd()2。子窗口句柄:用Fin...

MFC对话框如何获取窗口的句柄呢?
每个窗口类外使用GetSafeHwnd(),类内使用m_hWnd,获得窗口句柄。对话框也不例外。

mfc单文档中如何获取View视图(CmyView类实例产生的窗口)窗口的句柄?
补充一点,如果你是用静态分割产生的分割视图,可以充分利用CSplitterWnd的GetPane函数,比如,在CmylView中去获取CmyView的窗口句柄(假设CmyView在分割的0行0列):CSplitterWnd *ps = (CSplitterWnd *)GetParent();CmyView *pView = (CmyView *)(ps->GetPane(0,0));pView - >m_hWnd即可获...

mfc 获取按钮句柄
所以只要获得了窗口或者控件的指针 就可以调用成员变量m_hWnd来获取句柄 例如在当前窗口或者控件下操作 就可以直接用this指针 this->m_hWnd 另外 GetSafeHwnd 这个函数也可以试试 具体情况具体分析 具体用法看MSDN吧 记住一点的是 MFC中的消息映射的过程就是通过指针与句柄的映射来实现的 ...

mfc单文档中如何获取鼠标当前窗口的句柄?
给你2个函数能够搞定.不懂查msdn使用方法.BOOL GetCursorPos(LPPOINT lpPoint );HWND WindowFromPoint(POINT Point );

MFC我声明了一个HWND对象haha,怎么把当前窗口的句柄赋给他?
窗口句柄存贮在CView类的m_hWnd变量中 要将当前窗口的句柄赋值给它,可以先获取当前窗口的指针或对象的引用,然后通过窗口对象的指针或引用访问m_hWnd变量。如:要获得主框架的窗口句柄可以使用 CWnd * pWnd = AfxGetMainWnd();haha = pWnd->m_hWnd;...

bcb怎样得到resource句柄
句柄 这一概念是MFC里的一个类,MFC有专门的函数来获取窗口句柄。HWND hwnd;hwnd=CreateWindow("my own windowshandle","jaycnvip",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);这是用一个句柄变量来保存新创建的窗口句柄。其它如:通过窗口标题获取窗口句柄 CWnd *pWnd = FindWindow(...

MFC 从对话框打开文件 然后取得给文件的句柄 应该怎样做
通过OpenFile从文件名打开获取文件句柄;创建文件这个没明白你的意思,是需要自动命名还是同名改扩展名 如果是改扩展名,从CFileDialog那里获取CString CFileDialog::GetFileName( ),然后字符串拼接就可以了;如果自动命名,那么通过CString::Format("XXX%d.txt",iIndex);批量命名。

关于C++MFC窗口控件句柄获取问题
第一参数必须指定明确的父窗口,如果为NULL,则是获取顶层窗口(即,父窗口为桌面);被查找窗口(控件)必须和第二参数是明确的父子关系,且子窗口不是模态窗口(模态窗口有些特殊,一般不这样获取);子窗口获取可能不是一次成功,如果类似子窗口很多,可能需要判断hwndChildAfter。从你图中代码,无法判断...

MFC如何知道光标在那个控件上 用哪个函数?谢谢
参数:Point:指定一个被检测的点的POINT结构。返回值S:返回值为包含该点的窗口的句柄。如果包含指定点的窗口不存在,返回值为NULL。如果该点在静态文本控制之上,返回值是在该静态文本控制的下面的窗口。备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。应用程序应该使用...

相似回答