如何在对话框程序中使用view类

 我来答
就烦条0o
2017-02-06 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33317 获赞数:46481
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
如有开发需要,例如如自己写个小软件什么的,需要在对话框程序中使用到view类,但是有不想view类中带有doc类,可以用以下的做法:

① 从view类中继承一个CXXXView类

② 重写如下几个函数:OnMouseActivate、PostNcDestroy、OnActivateFrame

其中OnMouseActivate函数要修改成返回基类处理的结果

int CXXXView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
// return CRichEditView::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
void CPiaoDbgEditView::PostNcDestroy()
{
// TODO: 在此添加专用代码和/或调用基类

// CRichEditView::PostNcDestroy();
}

void CPiaoDbgEditView::OnActivateFrame(UINT nState, CFrameWnd* pDeactivateFrame)
{
// TODO: 在此添加专用代码和/或调用基类

// CRichEditView::OnActivateFrame(nState, pDeactivateFrame);
}

而PostNcDestroy、OnActivateFrame则改为空函数

③ 关键在这里,在CXXXView类创建一个CreateFromDlg函数,用于创建View窗口

其中使用了View类的Create方法

BOOL CXXXView::CreateFromDlg(UINT nID, CWnd* pParentWnd)

{

if (!pParentWnd || !pParentWnd->GetSafeHwnd())

{

return FALSE;

}

//......此处省略若干代码

this->Create(NULL, NULL, nStyle, rect, pParentWnd, nID, NULL);

//......此处省略若干代码

}

④ 最后,看看从view类派生出来的类中,构造函数和析构函数都是protect的,当然要

改成public的了,不然外部用不了。

这样一来,在对话框类中中 CXXXView m_xxxView,再调用m_xxxView.Create(...)就可以动态创建View类窗口了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式