在MFC里如何用菜单命令实现两个FormView

在MFC里如何用菜单命令实现两个FormView,第1张

创建分割视图-在新建工程的第四步,advanced选项里面选择use splitter window,第五步选择windows explore(可选项,建议选上),在CMainFrame的OnCreateClient函数里面,选择自己的类,这些类是要自己去创建的,要基于FormView。可以左右都是FormView。要实现菜单命令切换功能也很简单,只是我前不久也发过个问题,居然没人回答~。这里跟你共享一下代码:

voidCMainFrame::OnChangeView1()

{

m_wndSplitter.DeleteView(0,1)

m_wndSplitter.CreateView(0,1,

RUNTIME_CLASS(CFomr1View),

CSize(0,0),

NULL)

m_wndSplitter.RecalcLayout()

}

切换别的视图,将它所在的类在上面函数中替换即可。

提示:这些视图要自己去创建,并将他们的类基于FormView即可。

这种窗口界面可以通过两种方式实现:

拆分式View。MFC单/多文档程序支持拆分视图窗口,在向导中选择拆分视图个数,并分别指定视图为FormView和CView即可。

对话框式工具条。在VC6中使用CDialogBar,新版VS中使用CDockablePane,即可以工具条的方式建立左侧的Form,并像工具条一样使用它。

决定使用哪种方式,看程序的具体需求,如果是多文档一对一的方式或者都使用Doc传递数据,推荐方法1,如果是Form全局或者希望Form界面更灵活的伸缩隐藏等,推荐方法2

方法如下:

用CView*或者CFrameWnd*给他做父窗口 一般你是做成非模态对话框就用Create Example

CMyDialog* pDialog

void CMyWnd::OnSomeAction()

{

//pDialog initialized to NULL in the constructor of CMyWnd class

pDialog = new CMyDialog()

//Check if new succeeded and we got a valid pointer to a dialog object

if(pDialog != NULL)

{

BOOL ret = pDialog->Create(IDD_MYDIALOG,/*父窗口*/)

if(!ret) //Create failed.

AfxMessageBox("Error creating Dialog")

pDialog->ShowWindow(SW_SHOW)

}

else

AfxMessageBox("Error Creating Dialog Object")

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11956540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存