要找到某个CWnd对象的HWND,用GetSafeHwnd()。
在窗口类中,有句柄的成员变量,可以直接访问: m_hWnd
在窗口类外,可以用AfxGetMainWnd()->m_hWnd获得。
在MainFrame里直接用this;
其它地方用
CMainFrame* pMainFrame = (CMainFrame*)theApp.m_pMainWnd;
想得到一个控件的的句柄
GetDlgItem(ID…)->m_hWnd
得到视图的句柄
AfxGetMainWnd()->GetActiveView();
SDI:
((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();
MDI:
((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveFrame()->GetActiveView();
分类:
GetSafeHandle();
this-> hWnd;
GetDlgItem(hwnd,ID);//获取窗口ID所对应的HWND的子窗口句柄
在主窗口中,如果要用到父窗口的句柄,可以用
HWND GetParent(HWND hWnd) 得到
参数为当前所在子窗口的句柄,函数的返回值就是当前子窗口的父窗口句柄
在父窗口中,如果有子窗口句柄,可以调用 GetWindowLong(hwndChild,GWL_ID)
参数GWL_ID就是用语获取子窗口的句柄
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
其中lpClassName是窗口的类名,你可以用spy++来查看其类的名称;lpWindowName是窗口的名称,一般指的是窗口的标题。如果窗口的名称唯一,则窗口的类名可以省略,如:
HWND hWnd;
hWnd = ::FindWindow(NULL, "你的窗口标题 ");
对象-> GetSafeHwnd(); //控件对象
this-> hWnd;
GetDlgItem(hwnd,ID);//获取窗口ID所对应的HWND的子窗口句柄
在主窗口中,如果要用到父窗口的句柄,可以用
HWND GetParent(HWND hWnd) 得到
参数为当前所在子窗口的句柄,函数的返回值就是当前子窗口的父窗口句柄
在父窗口中,如果有子窗口句柄,可以调用 GetWindowLong(hwndChild,GWL_ID)
参数GWL_ID就是用语获取子窗口的句柄
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
其中lpClassName是窗口的类名,你可以用spy++来查看其类的名称;lpWindowName是窗口的名称,一般指的是窗口的标题。如果窗口的名称唯一,则窗口的类名可以省略,如:
HWND hWnd;
hWnd = ::FindWindow(NULL, "你的窗口标题 ");
对象-> GetSafeHwnd(); //控件对象