view里创建非模对话框碰到的问题
我现在有个VIEW,要在此VIEW里先建个RICHEDIT,再建个非模的对话框,非模的对话框的对话框能SHOW和HIDE掉并且此非模的对话框也能接受事件触发.
代码实现如下:
systemmsgview.h中定义RICHEDIT和DLG:
public:
CRichEditCtrlEx m_SystemMsg;
CDlg_Face* pDlgFaceBase;
CSystemMsgView.CPP中具体实现:
int CSystemMsgView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
RECT rect;
memset(&rect, 0, sizeof(RECT));
m_SystemMsg.Create(ES_LEFT | ES_MULTILINE | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL,rect,this,0);
if(pDlgFaceBase == NULL)
{
pDlgFaceBase =new CDlg_Face();
pDlgFaceBase->Create(this, IDD_DLG_FACE);//
}
return 0;
}
void CSystemMsgView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
CWnd* pWnd =&m_SystemMsg;
SAFE_CHECKWND(pWnd)
{
RECT rect;
memset(&rect, 0, sizeof(RECT));
this->GetClientRect(&rect);
rect.bottom -= 20;
m_SystemMsg.MoveWindow(&rect);
}
SAFE_CHECKWND(pDlgFaceBase)//249*195
{
RECT rect;
memset(&rect, 0, sizeof(RECT));
this->GetClientRect(&rect);
rect.top = rect.bottom - 195;
rect.right = rect.left + 249;
rect.bottom = rect.top + 195;
pDlgFaceBase->MoveWindow(&rect);
}
}
CDlg_Face的STYLE为Child.
现在当CDlg_Face显示的时候,此对话框一直得不到焦点.就是鼠标点对话框时,其实还是在点RICHEDIT.
如果CDlg_Face的下面没有RICHEDIT,则此对话框能得到焦点.
疑问中,望各位不啬赐教!