
这个函数返回了CWinThread指针,它的一个成员m_hThread就是线程的句柄再次执行你就要再调用AfxBeginThread,因为如果线程结束了,那你得到的句柄其实已经无效了
1 在多文档多视图的MFC架构中,要想获得当前选中的CView可重写CView::OnActivateView函数,如下:
void
OnActivateView(BOOL bActivate,
CView pActivateView,
CView pDeactiveView)
{
if(bActivate)
{
SetEnable(TRUE);
}
else
{
SetEnable(FALSE);
}
CView::OnActivateView(bActivate,
pActivateView,
pDeactiveView);
}
2 获得窗口或者视图句柄
2.1 获得窗口句柄
要找到某个CWnd对象的HWND,用GetSafeHwnd()。
在窗口类中,有句柄的成员变量,可以直接访问: m_hWnd
在窗口类外,可以用AfxGetMainWnd()->m_hWnd获得。
在MainFrame里直接用this;
其它地方用 CMainFrame pMainFrame = (CMainFrame)theAppm_pMainWnd;
想得到一个控件的的句柄
GetDlgItem(ID…)->m_hWnd
2.2 获得视图的句柄
AfxGetMainWnd()->GetActiveView();
SDI: ((CFrameWnd)(AfxGetApp()->m_pMainWnd))->GetActiveView();
MDI: ((CFrameWnd)(AfxGetApp()->m_pMainWnd))->GetActiveFrame()->GetActiveView();
void CMy1128Dlg::OnBnClickedButton1()//按钮响应函数
{
CreateThread( NULL, 0, ThreadFunc, this, 0, 0 );//将对话框指针传入线程函数
//GetDlgItem(IDC_Picture);//在这里不需要第一个参数,能用。
}
DWORD WINAPI ThreadFunc( LPVOID lpParam )//线程函数
{
CMy1128Dlg pDlg = (CMy1128Dlg )lpParam;
CWnd pwnd = pDlg->GetDlgItem(IDC_Picture);
}
GetDlgItem()//只有一个参数就是你要获取的子窗口的ID,返回值是一个指向CWnd类的指针.该函数可以根据一个ID号获取一个对应的对象指针,在任何派生自CWnd类的类中都可以使用.如果你非要句柄的话.那就
CWnd pWnd= GetDlgItem(/子窗口ID/);
pWnd->m_HWnd;//得到这个子窗口的句柄
以上就是关于MFC中怎样从一个线程中获取当前主窗口的句柄全部的内容,包括:MFC中怎样从一个线程中获取当前主窗口的句柄、mfc中创建分割视图怎么获取视图窗口句柄、MFC中怎样获得句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)