WIN上的C++编程很多人采用VC/MFC,不少人自认为精通MFC编程.现在,我想就MFC应用做一个小调查.我以前有过多年的CB编程经验,在CB中MDI编程中,可以在任何窗口中非常容易地实现所见即所得的可视化编程设计,也是最重要最基本的开发技术之一.最近我打算在MFC中也采用MDI程序,由于窗口中涉及到多种控件的设计和使用,因此有必要在子窗口中实现象对话框中一样的所见即所得的设计方式,经过反复衡量后,我决定采用对话框,当打开一个对话框时,显示的就象一个子窗体一样.经过查找资料发现MS根本就没有这样的资料和范例,就是Word和Exce的设计开发也没有用到这种技术,至于各种VC编程书籍更是肤浅得不值得一提.但反复查找资料后我还是找到了将对话框变成子窗体的方法.现在我的问题是:您是否有过将对话框作为子窗体显示的开发经验? 谢谢您参与调查.

解决方案 »

  1.   

    对话框作为子窗口显示?这意思是说把对话框嵌入到一个窗口里???MDI不是这效果么???
      

  2.   

    我们经常这么做 在子对话框上布置好控件 然后贴在主对话框上 MDI使用起来太麻烦了 我们根本不需要document
      

  3.   

    好象答非所问哦.请问什么叫子对话框?什么叫主对话框?我只知道MDI中的主窗口和子窗口.
      

  4.   

    MDI使用CFORMVIEW就可以在资源里编辑界面了, 但要手动修改和链接对话框,向导是没办法的对话框里创建子对话框也可以啊,只是这些都是需要手动修改和创建的没有CB那么方便。
      

  5.   

    我开头就说了吗?我没有看到任何一本VC/MFC的书籍中举出过例子,甚至没有提到过,仅仅提到文档视图中的MDI,没有任何书籍教你把对话框设计成子窗口一样打开.所以更不用说VC向导了.我只是想调查一下在我们这个庞大的VC开发群中究竟有多少人有这种在其他开发工具实现起来很简单的开发经验(其中有不少人自称精通VC/MFC).
      

  6.   

    在文档-视图体系中,CFormView就是你要的。
    对话框作为子窗口没有任何问题,wizard或标签式对话框就是最典型的例子,看看CPropertySheet和CPropertyPage类如何使用。
    完全自己实现也没有问题,按照标准方式创建对话框窗口,父窗口设置成期待的窗口,但是跟创建普通子窗口有几个小的不同:
    1、不能用DoModal,只能用Create方式创建窗口
    2、对话框模板资源中通常预先定义了窗口样式,不同类型的模板使用了不同的样式,创建窗口时要调整这些样式
    3、必须处理某些对话框特有的消息,比如回车键、ESC键、OnOK、OnCancel等等,以免发生一些不合适的行为
    4、必须让这个作为子窗口的对话框有机会预处理某些键盘消息,比如TAB/SHIFT-TAB等等
    要做的工作其实很少。书上的例子少,说明对话框通常仅作为“对话框”用途,绝大部分需求都可以满足。看这些书的通常也是在提高中的程序员。真正精通MFC的人不会再纠缠这些概念,对他们来说,所有的窗口都是一样的,只因为个体行为的不同而采用不同的名称。
      

  7.   

    看来我的调查没什么人响应,这也足以说明多数用VC/MFC的人恐怕对界面编程还不是很在意啊.
      

  8.   

    我先在这里学习一下。
    同意11楼,建议看看CPropertySheet和CPropertyPage类如何使用。个人认为:
    程序优劣的关键是功能健全,界面明朗实用。至于用多少个界面,多少个窗口什么的,都是些末节。
      

  9.   

    CFormView可以达到你的效果-------》》》子窗口中实现象对话框中一样的所见即所得的设计方式
      

  10.   

    看来各位误解了,我只是希望各位像VisualEleven一样回答"有过..."或者"没有过"就够了,不需要大家解释或强调什么,我仅仅做一个简单的小调查罢了.
      

  11.   

    有呀,这是在MFC里经常用的呀
      

  12.   

    有过,不常做。曾经有个软件人家叫我模仿,我用对话框做的,做了一侧带按钮旁边带窗口的,还加了菜单条。
    后来被否了,人说你干嘛用VC做出来看起来像VB做的?缺心眼啊?改回去了。
      

  13.   

    我最早开始做MFC程序,现在尽量少使用MFC,这东西真不好用。
    转移到QT、以及WEBKIT上了。
    word以及excel不是用MFC开发的。
      

  14.   

    在MFC中,要实现自己的想要的页面布局是要自己写代码实现的,比如自己写个继承于CWnd的窗口类,在继承的类中做详细的处理,既然不想用现成的框架,那就要看自己的能力了。但凡要实现自己定制的界面风格的,一般都要在原有的类的基础上进行拓展的。做界面,LZ可以考虑用C#啊,C#实现了很多控件,可以很容易地实现窗口的布局。自己认为自己很牛的人一点都不牛,别人认为你牛你才是真的牛,既然是来讨论问题寻求建议的,态度很重要的!
      

  15.   

    既然是来讨论了,就再说两句吧。VC2008 SP1中引入了BCG的界面库,创建的SDI和MDI窗口中可以嵌入多个可指定位置的可停靠的窗口,在可停靠窗口中创建控件就可以了。
      

  16.   

    暂时没在MFC上用过,但总不会比直接使用API复杂吧用CreateDialog创建
    无非就是写消息处理得完全自己写,麻烦了点
      

  17.   

    ----这个行不通.我发帖前已经用VC6搞定了.不过搞定前曾经考虑了用BCG代替MFC,结果发现没有我要的功能.
      

  18.   

    ----你的这个客户很搞笑啊.软件界面就是要做的好看又好用啊,那管你VB还是VC.
      

  19.   

    MFC已经封装了单文档和多文档,为何还要提供对话框呢?
    为什么允许对话框上直接添控件呢?
    嘿嘿,一直拿对话框当子窗体来用。
      

  20.   

    看来会的人还不少,MFC做界面看上去也还不错嘛.谢谢大家回复,结帖散分了啊.