本程序是基于多文档/视图的 ,开发环境2010添加了一个菜单, 点击菜单,想实现 弹出个对话框的功能。但是这个对话框的基类不是CDialog,而是CFormView。 ...........CFormView的派生类为:CMyDialogclass CMyDialog:public CFormView
{
...........};问题1:是不是按照一般对话框那样创建,直接new一下,再Create ,Show一下就可以了。
问题2:构造函数我已经改成public 的。我发现 这个CFormView没有OnInitDialog。 也没有OnCreate? 简直不可思议。太诡异了。 还有,这种对话框如何销毁。。百度又找不到相关资料
{
...........};问题1:是不是按照一般对话框那样创建,直接new一下,再Create ,Show一下就可以了。
问题2:构造函数我已经改成public 的。我发现 这个CFormView没有OnInitDialog。 也没有OnCreate? 简直不可思议。太诡异了。 还有,这种对话框如何销毁。。百度又找不到相关资料
http://msdn.microsoft.com/en-us/library/ws8s10w4(vs.71).aspx
所以不能new Create Show 这样来创建
CFrameWnd* pFrameWnd = new CFrameWnd();
pFrameWnd->Create(NULL, NULL, WS_VISIBLE | WS_OVERLAPPEDWINDOW, CRect(200, 200, 400, 300));
CCreateContext cc;
cc.m_pCurrentDoc = NULL;
cc.m_pNewViewClass = RUNTIME_CLASS(CNewFormView);
cc.m_pCurrentFrame = pFrameWnd;
CNewFormView* pView = (CNewFormView*)(pFrameWnd->CreateView(&cc));
pView->ShowWindow(SW_SHOW);
pView->UpdateWindow();有点需要注意的是CFromView派生类关联的对话框资源的风格是WS_CHILD风格
GetClientRect(&rect);
m_pformOption->Create(NULL, "Option window", WS_CHILD|WS_VISIBLE, rect, this, 0, NULL);//重要的地方4.因为第3步调用到了CMyClass的Create函数,这个函数是继承CFormView类的,在CFormView中它是保护类型,因此,为了可以访问它,我们要在CMyClass中重载它,类型为公开类型。
已经给你答案了!