mfc 多线程UI 如何让多线程UI显示到主对话框中
我有一个多文档程序, 想用多线程来显示播放器, 在Formview中把播放器的窗口显示出来,请问如何做!我通过UI界面编程把子Formview的窗口句柄传递进去,但是主界面还一直显示的是Formview,播放器的窗口没显示在Formview中!但是鼠标移动到显示播放器的位置时,播放器会出来,一刷新,播放器又不见了!如何用播放器的窗口替换FormView;ps:FormView是通过切割产生的!
这里是用来创建UI线程
int CUIVPlayerFormView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
m_pThreadVPlayer = (CThreadVPlayer *)AfxBeginThread(RUNTIME_CLASS(CThreadVPlayer),
THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);//创建后先不要启动.
m_pThreadVPlayer->m_hParentWnd = m_hWnd;//主窗口句柄.
m_pThreadVPlayer->ResumeThread();
return 0;
}
// CThreadVPlayer
class CThreadVPlayer : public CWinThread
{
/*去掉了没用到底代码*/
virtual BOOL InitInstance();
virtual int ExitInstance();
IVideoPlayerCtrl *m_videoPlayerCtrl; /播放器对象
public:
HWND m_hParentWnd; //注意,它是父窗口句柄,不能是CWnd*对象.
/*去掉了没用到底代码*/
};
BOOL CThreadVPlayer::InitInstance()
{
// TODO: 在此执行任意逐线程初始化
//ASSERT(::IsWindow(m_ hParentWnd));
CWnd* pParent = CWnd::FromHandle(m_hParentWnd);//注意这行
// CUIChildDlg* pDlg = new CUIChildDlg(pParent);
m_videoPlayerCtrl->Create(pParent,CRect(0,0,80,80));
m_videoPlayerCtrl->ShowWindow(SW_SHOW);
return TRUE;
}