VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: yncyncync

很菜的问题,MDI窗体!

[复制链接]

1

主题

9

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-12-15 07:00:01 | 显示全部楼层
怎样调用呢?
我知道这样可以将我的对话框显示出来
// 创建单位部门对话框
  CDWBM dlg;
  dlg.DoModal();

怎样调用我的子窗体呢?
回复

使用道具 举报

1

主题

9

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-12-15 11:45:01 | 显示全部楼层
我想调用的是能最大化最小化的窗体,不是对话框
回复

使用道具 举报

0

主题

5

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-15 14:30:01 | 显示全部楼层

pretendersam
可以在 CFormView 上放控件啊, 就象你在 Delphi 中一样.
试着新建一个基于 CFormView 的 MFC MDI 工程, 用一下就知道了.

-------------------------------------------------------
vc 里面用MDI做主子窗口和delphi一样.
他说的CFORMVIEW 就是说的显示窗口的类,其实就和你delphi里面的
控件添加界面一样,只不过vc里面分了三个视窗.
双击时需要怎样的反映,就初始化怎样的反映.

最大化和最小化就是自己在创建form是对它的属性设置了.
选择最大化  或最小化.  

每一个窗口都有一个基如一个窗口类,然后定义一个指针,用来控制
该窗口就行了.


一个classview  , resourceview, documentview.
而在 resourceview里面就和你的控件添加窗口一样.

想要调用,就需要会点mfc了,你单击是需要怎样反映,就写怎样的反映.  
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-12-18 19:15:01 | 显示全部楼层
LZ没有任何的VC编程概念,或者说对MFC一点都不理解,还是用你熟悉的工具吧,不然只能事倍功半咯
回复

使用道具 举报

1

主题

9

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-12-20 08:00:01 | 显示全部楼层
以上除 lgq1982 以外,其余的都是一群饭桶,超级饭桶。

告初学者:如何用VC设计MDI程序。

1、首先创建一多文档程序;
2、点击【Insert】,【New Form...】菜单项。
   在Name中输入 CTemp1View
   Base Class 选择 CFormView
   其他不用动,点击“OK”按钮。
3、点击【Insert】,【New Class...】菜单项。
         Name: CTempFrm
   Base class:  CMDIChildWnd
   点击“OK”按钮。
4、在CXXXApp中添加
   public:
     CMultiDocTemplate * m_pTemplate;
5、在CXXXApp中,修改 InitInstance() 的代码。

   SetRegistryKey(_T("Local AppWizard-Generated Applications"));

        LoadStdProfileSettings();  // Load standard INI file options (including MRU)

        // Register the application's document templates.  Document templates
        //  serve as the connection between documents, frame windows and views.

        //CMultiDocTemplate* pDocTemplate;  //注释掉
        //pDocTemplate = new CMultiDocTemplate( //注释掉
         //添加自己的MDI子窗体
        m_pTemplate = new CMultiDocTemplate(
                IDR_XXXTYPE,//这里不变
                RUNTIME_CLASS(CXXXDoc),//这里不变
                RUNTIME_CLASS(CTempFrm), // 需要修改
                RUNTIME_CLASS(CTempView));//需要修改
        AddDocTemplate(m_pTemplate);
         //如果还有其他窗体
         m_pTemplate2 = new CMultiDocTemplate(
                IDR_XXXTYPE,//这里不变
                RUNTIME_CLASS(CXXXDoc),//这里不变
                RUNTIME_CLASS(CTemp2Frm), // 需要修改
                RUNTIME_CLASS(CTemp2View));//需要修改
        AddDocTemplate(m_pTemplate2);
         m_pTemplate3 = new CMultiDocTemplate(
                IDR_XXXTYPE,//这里不变
                RUNTIME_CLASS(CXXXDoc),//这里不变
                RUNTIME_CLASS(CTemp3Frm), // 需要修改
                RUNTIME_CLASS(CTemp3View));//需要修改
        AddDocTemplate(m_pTemplate3);
         ...

        // create main MDI Frame window
        CMainFrame* pMainFrame = new CMainFrame;
        if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
                return FALSE;
        m_pMainWnd = pMainFrame;

5、调用子窗体
   声明变量
   protected:
        CTempFrm* m_pTempFrm;
void CMainFrame::OnMenu1Click()
{
        // 打开已有的框架窗口
        if(pTempFrm)
                MDIActivate (pTempFrm);
        else
        {
                //窗口没有打开,重新打开一个新的窗口
                CDocument *pDoc=((CFXXXApp *)AfxGetApp())->m_pTemplate->OpenDocumentFile(NULL);
                pDoc->SetTitle("子窗体1 楼上除 lgq1982 以外,其余的都是一群饭桶,超级饭桶。");
                //保存与新打开框架窗口指针
                m_pTempFrm= (CTempFrm*)MDIGetActive();
        }                       
}

也!!!!适合初学者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表