很菜的问题,MDI窗体!

lyt_251 2007-01-06 11:40:39
本人用Delphi,近来想了解一下VC,想做一MDI程序,却被什么文档啦,视图啦,框架啦一下子搞晕啦,不知该如何下手。
本人的想法很简单,创建一MDI主窗口,两个子窗口(上面方一些控件,如ListCtrl,Button等等),不需要什么文档啦,视图啦。
在Delphi中只需新建一Form窗体,将其FormStyle属性设为 fsMDIChild 即可,然后在主窗口中编写如下代码便可显示字窗口。
Form2:=TForm2.Create(Application);
Form2.Show;
在Form2的OnClose函数中写入 Action:=caFree 便可点击Form2窗体上的“X”按钮,关闭Form2窗体。

我的问题:
1、VC中如何创建设计Form2子窗体。
2、在主窗口中如何调用我的Form2窗体。
3、如何关闭Form2窗体。
注释:本人很菜,拜托一步一步写清楚,不要只写一两句。谢谢。
...全文
377 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
王国凡 2007-01-06
  • 打赏
  • 举报
回复
>怎样调用我的子窗体呢?
-------------------------
这个好办啊, 随便在 google 里找一下 "MFC 入门" 或者 "MFC 教程" 里边肯定有说到.

如果你是在 VC++6 里, 则在资源中添加了一个菜单之后, 然后在菜单 ClassWizard 里添加对应的消息映射函数, 把创建对话框的代码写在那里即可.

如果你是在 VC++2005, 则更简单了, 在资源管理器中打开你的菜单, 对想打开窗体的菜单项点右键, 然后选择其中的"添加事件处理程序 ...", 然后出来个对话框, 直接创建就可以自动转到你写代码的函数中了.
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
怎样调用呢?
我知道这样可以将我的对话框显示出来
// 创建单位部门对话框
CDWBM dlg;
dlg.DoModal();

怎样调用我的子窗体呢?
王国凡 2007-01-06
  • 打赏
  • 举报
回复
> ...如何创建CFormView
--------------------------
看我的第一个回复

如果你想点不同的菜单出不同的 form, 则在 MFC 中可以添加自己菜单项, 点击之后弹出自己的 dialog , 在 dialog 想干什么, 那就随你便了.
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
大侠说清楚点,我不懂,如何创建CFormView
是不是在ResourceView中插入对话框,在将他的基类改为CFormView
王国凡 2007-01-06
  • 打赏
  • 举报
回复
可以在 CFormView 上放控件啊, 就象你在 Delphi 中一样.
试着新建一个基于 CFormView 的 MFC MDI 工程, 用一下就知道了.
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
我想做想什么什么管理系统那样,点一个菜单出现一个子窗体,每个窗体的功能、控件是不一样的。
Delphi中很简单,VC怎么这么复杂。
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
To:syy64(太平洋)
我要用MDI窗体,不用基于对话框的程序。
我如何设计自己的窗体,并调用他
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
TO:李逍遥
我想自定义View,不想用新建菜单。而且。我想在View上放控件
syy64 2007-01-06
  • 打赏
  • 举报
回复
可以创建一个基于主对话框的工程,在主对话框上再建一个Form窗体。
王国凡 2007-01-06
  • 打赏
  • 举报
回复
要新建一个 View, 选择新建菜单就可以得以, 至于关闭, 点窗体上的“X”按钮即可,
你说的这些在 MFC 中不需要写一行程序 .
长尾巴的悟空 2007-01-06
  • 打赏
  • 举报
回复
兄弟,我支持你,给你精神上的帮助!
王国凡 2007-01-06
  • 打赏
  • 举报
回复
在创建 MFC 向导的时候, 在最后一步让你的视图类的基类(base class)选择 CFormView
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
以上除 fengzar1984(风仔) 以外,其余的都是一群饭桶,超级饭桶。

告初学者:如何用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 楼上除 fengzar1984(风仔) 以外,其余的都是一群饭桶,超级饭桶。");
//保存与新打开框架窗口指针
m_pTempFrm= (CTempFrm*)MDIGetActive();
}
}

也!!!!适合初学者
loseme915 2007-01-06
  • 打赏
  • 举报
回复
LZ没有任何的VC编程概念,或者说对MFC一点都不理解,还是用你熟悉的工具吧,不然只能事倍功半咯
fengzar1984 2007-01-06
  • 打赏
  • 举报
回复

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

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

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

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


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

想要调用,就需要会点mfc了,你单击是需要怎样反映,就写怎样的反映.
lyt_251 2007-01-06
  • 打赏
  • 举报
回复
我想调用的是能最大化最小化的窗体,不是对话框
与界面设计 9 实例001  带历史信息的单 10 实例002  单动态合并 12 实例003  像开始单一样漂亮的单 14 实例004  任务栏托盘单 15 实例005  可以拉伸的单界面 16 实例006  级联单 18 1.2  工具栏设计 19 实例007  带带背景的工具栏 19 实例008  带浮动工具栏 20 实例009  在带下拉单的工具栏 21 实例010  在具有提示功能的工具栏 22 实例011  在状态栏中显示检查框 23 实例012  带进度条的状态栏 25 实例013  状态栏中加入图标 26 实例014  OutLook界面 27 实例015  带带导航单的主界面 29 实例016  图形化的导航界面 32 实例017  类QQ的程序界面 35 实例018  类似windows xp的程序界面 38 实例019  以图形按钮显示的界面 42 实例020  以树形显示的程序界面 44 实例021  动态按钮的界面 46 实例022  非矩形 50 实例023 建立字形状 52 实例024 控件随自动调整 54 实例025 带分隔栏的 55 实例026 随机更换主界面背景 56 实例027 自动启动的多媒光盘程序 57 实例028 为触摸屏程序添加虚拟键盘 59 实例029 半透明渐显 61 实例030 口颜色的渐变 63 实例031 中的滚动字幕 65 实例032 动画显示 67 实例033 制作闪烁的 69 实例034 直接在上绘图 70 实例035 动画形式的程序界面 73 实例036 使标题栏文字右对齐 75 实例037 没有标题栏可义改变大小的口 76 实例038 设置在屏幕中的位置 77 实例039 始终在最上面的 78 实例040 限制大小 79 实例041 获取桌面大小 81 实例042 在口间移动按扭 82 实例043 如何实现Office助手 84 实例044 在关闭口前加入确认对话框 85 实例045 使用任意组件拖动 88 实例046 修改提示字及颜色 89 实例047 如何为MDI类型设置背景图片 91 实例048 向提示框中添加图标 93
第1章 与界面设计....... 1 1.1 单应用实例...... 2 实例001 带历史信息的单...... 2 实例002 单动态合并...... 3 实例003 像开始单一样漂亮的单...... 4 实例004 任务栏托盘单...... 5 实例005 可以拉伸的单界面...... 5 实例006 级联单...... 7 1.2 工具栏设计...... 7 实例007 带背景的工具栏...... 7 实例008 浮动工具栏...... 8 实例009 带下拉单的工具栏...... 9 实例010 具有提示功能的工具栏...... 9 1.3 状态栏设计...... 10 实例011 在状态栏中显示检查框...... 10 实例012 带进度条的状态栏...... 11 实例013 状态栏中加入图标...... 12 1.4 导航单界面...... 12 实例014 OutLook界面...... 12 实例015 带导航单的主界面...... 14 实例016 图形化的导航界面...... 15 1.5 特色程序界面...... 17 实例017 类QQ的程序界面...... 17 实例018 类似Windows Xp的程序界面...... 18 实例019 以图形按钮显示的界面...... 20 实例020 以树形显示的程序界面...... 21 实例021 动态按钮的界面...... 22 1.6 特殊形状的...... 24 实例022 非矩形...... 24 实例023 建立字形状...... 25 实例024 控件随自动调整...... 26 实例025 带分隔栏的...... 27 实例026 随机更换主界面背景...... 27 1.7 多媒光盘...... 28 实例027 自动启动的多媒光盘程序...... 28 实例028 为触摸屏程序添加虚拟键盘...... 29 1.8 效果...... 30 实例029 半透明渐显...... 31 实例030 口颜色的渐变...... 32 1.9 动画...... 33 实例031 中的滚动字幕...... 33 实例032 动画显示...... 34 实例033 制作闪烁的...... 35 实例034 直接在上绘图...... 37 实例035 动画形式的程序界面...... 38 1.10 标题栏...... 39 实例036 使标题栏文字右对齐...... 39 实例037 没有标题栏但可以改变大小的口...... 39 1.11 设置位置...... 40 实例038 设置在屏幕中的位置...... 40 实例039 始终在最上面的...... 41 1.12 设置大小...... 42 实例040 限制大小...... 42 实例041 获取桌面大小...... 42 实例042 在口间移动按钮...... 43 实例043 如何实现Office助手...... 44 1.13 控制技术...... 45 实例044 在关闭口前加入确认对话框...... 45 实例045 使用任意组件拖动...... 46 实例046 修改提示字及颜色...... 47 1.14 其他技术...... 48 实例047 如何为MDI类型设置背景图片...... 48 实例048 向提示框中添加图标...... 49 第2章 控件应用....... 51 2.1 TextBox控件应用...... 52 实例049 只允许输入数字的TextBox控件...... 52 实例050 限制用户名称长度及设置密码文本...... 54 实例051 自动删除非法字符...... 55 实例052 为TextBox控件添加列表选择框...... 57 2.2 Button控件应用...... 58 实例053 在Button按钮中显示图标...... 58 2.3 ComboBox控件应用...... 59 实例054 将数据表中的字段添加到ComboBox控件...... 59 实例055 带查询功能的ComboBox控件...... 61 2.4 RichTextBox控件应用...... 63 实例056 利用RichTextBox控件实现文档管理功能...... 63 等等 共有近500个实例,来帮助你强化C#的学习

16,472

社区成员

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

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

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