如何在基于对话框的程序中,(通过按钮)生成一个非模式的CFormView的视图对话框

shinefen 2007-06-19 10:55:01
如何在基于对话框的程序中,(通过按钮)生成一个非模式的CFormView的视图对话框

问题是.我不知道怎样初始化,CFormView的create函数
他的参数都代表什么啊~我用NULL代替,会错啊.我不会用,,请指教.
我已经把继承于CFormView类的CJiangeDialog类的构造和析构函数声明为公有了

CJiangeDialog * tongjijiange=new CJiangeDialog;
CWnd *pWnd = (CWnd*)tongjijiange;
pWnd->Create(NULL,NULL,WS_CHILD|WS_VISIBLE,CRect(0,0,500,500),this,IDD_DIALOG_JIANGE,NULL);

//tongjijiange->Create(...


...全文
339 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leafxt 2008-06-29
  • 打赏
  • 举报
回复
视图对象的创建是通过调用Create方法,并提供了一个pContent参数实现的。因此,只要提供了pContent参数,就可以创建视图对象了。首先从CView类派生一个子类,然后在对话框类中添加CreateView方法创建视图。

CView* CDlgViewDlg::CreateView()

{

CCreateContext Content;

Content.m_pCurrentFrame = (CFrameWnd*)this;

Content.m_pNewDocTemplate = NULL;

Content.m_pCurrentDoc = NULL;

Content.m_pLastView = NULL;

Content.m_pNewViewClass = RUNTIME_CLASS(CDlgView);



CView* pTemp = (CView*)Content.m_pNewViewClass->CreateObject();

pTemp->Create(NULL,NULL

,AFX_WS_DEFAULT_VIEW,CRect(0,0,0,0),this,AFX_IDW_PANE_FIRST,&Content);

return (CDlgView*)pTemp;

}

最后在对话框初始化时调用CreateView方法创建视图。

m_ClientView = (CDlgView*)CreateView();

CRect rect;

GetClientRect(rect);

m_ClientView->MoveWindow(rect);
Joephia 2008-06-01
  • 打赏
  • 举报
回复
引用
如何在基于对话框的程序中,(通过按钮)生成一个非模式的CFormView的视图对话框

问题是.我不知道怎样初始化,CFormView的create函数
他的参数都代表什么啊~我用NULL代替,会错啊.我不会用,,请指教.


先不说怎么使用create函数

但是编程序的常识就不合理,为什么要在基于对话框的程序里使用View 呢?对话框应该是最简单的窗口程序了

而View则牵扯到文档,框架,文档模版等.所以在基于对话框的程序里,最好就只用对话框,如果是在要用,也是

在基于FORMVIEW 的SDI/MDI 里调用对话框,或者VIEW
菜牛 2008-06-01
  • 打赏
  • 举报
回复
CFormView是为了在视图中使用对话框模板;楼主在对话框中再用CFormView视图来显示对话框,不是多此一举吗?直接用对话框不就行了?
禽兽v5 2007-10-12
  • 打赏
  • 举报
回复
弹出对话框不够用?视图类有限制。
shinefen 2007-10-12
  • 打赏
  • 举报
回复
...我的是基于对话框的程序,不是单文档,多文档程序,所以工程资源里面没有视图类,所以问题是这个视图类的模版??CFromView...
wjkgz 2007-10-12
  • 打赏
  • 举报
回复
这个formview,应该是在资源里面确实存在的,这个ID,在CJiangeDialog有过定义,可以用CJiangeDialog::IID
shakaqrj 2007-10-12
  • 打赏
  • 举报
回复
总得在资源里面建一个对话框吧,第一个参数是id,新建的时候就已经有了,并且可以更改
shinefen 2007-06-21
  • 打赏
  • 举报
回复
Create()中的第一个参数..我如何搞个对话框模版出来啊?怎样定义?
shinefen 2007-06-20
  • 打赏
  • 举报
回复
就这么简单?

"PlayListView"?是标题名吗?
coldplay968 2007-06-20
  • 打赏
  • 举报
回复
m_pPlayListView = new CPlayListView();
if( ! m_pPlayListView->Create("PlayListView",NULL, WS_CHILD | WS_VISIBLE,
CRect(201,26,1000,30 ), this, 462, NULL) )
{
return FALSE;
}
shinefen 2007-06-19
  • 打赏
  • 举报
回复
BOOL CFormView::Create(LPCTSTR /*lpszClassName*/, LPCTSTR /*lpszWindowName*/,
DWORD dwRequestedStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext)
{
ASSERT(pParentWnd != NULL);
ASSERT(m_lpszTemplateName != NULL);

m_pCreateContext = pContext; // save state for later OnCreate

#ifdef _DEBUG
// dialog template must exist and be invisible with WS_CHILD set
if (!_AfxCheckDialogTemplate(m_lpszTemplateName, TRUE))
{
ASSERT(FALSE); // invalid dialog template name
PostNcDestroy(); // cleanup if Create fails too soon
return FALSE;
}
#endif //_DEBUG



/////////////
这里在
ASSERT(FALSE);
发生中断

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧