几种常用的MFC界面编程技巧

来源:互联网 发布:关于网络信息的段子 编辑:程序博客网 时间:2024/05/17 02:23

在MFC界面编程方面,有很多很好的Demo可以参考,这里只是记录几种常用的技巧,非常非常的基础,只能算是一点小小的总结。

详细而又权威的还是参考MSDN吧。

 

 

1.拆分窗口

拆分窗口可以实现单文档多视图效果,VC++6.0的资源编辑窗口,文件编辑窗口都是这个,可以使用静态或动态两种方法来创建,这里介绍静态创建拆分窗口的一般步骤。

第一步,wizard创建一个单文档程序,重载框架类CMainFrame::OnCreateClient函数,如下如下所示:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    // TODO: Add your specialized code here and/or call the base class
   
    // 静态拆分窗口,设置相关视图模式
    if (!m_wndSplitter.CreateStatic (this, 1, 2) ||
        !m_wndSplitter.CreateView (0, 0, RUNTIME_CLASS (CXXXView), CSize (200, 0), pContext) ||
        !m_wndSplitter.CreateView (0, 1, RUNTIME_CLASS (CXXXView), CSize (600, 0), pContext))
    return FALSE;

    return TRUE;
}

其中RUNTIME_CLASS (CXXXView)确定了拆分窗口的类,可以自定义。

第二步,新建类CXXXView,基类可以是CVIEW或其子类,如CTreeView,CScrollView等等。还有记得在MainFrm.cpp中添加相应的新类头文件和CSplitterWnd类型的变量(如上例中的m_wndSplitter)。

这样就基本可以了,其他的就和单文档单视图差不多,像修改窗口的风格的话可以在PreCreateWindow中修改cs.style实现。比较特别的是为菜单项在某窗口类添加的响应函数时,只有在该窗口处于激活状态,菜单项才有效。具体的解决方法还没找到,大家知道的请不吝赐教啊。好在我们还有框架类,文档类可以用。

 

 

2.属性表

属性表我一般用来做数据输入用,和对话框差不多。步骤感觉也不是很复杂。

第一步,为属性表页创建新类CXXXPage,继承CPropertyPage,并关联相应的对话框模板,注意到属性表提供了OK和CANCEL按钮,所以作为属性页表的对话框模板不应再包含这两种按钮。在对话框模板上的控件可以关联CXXXPage中的变量,用来做输入用也不错的。

第二步,为属性表创建新类CXXXSheet,继承CPropertySheet,并添加相应的CXXXPage类型变量(如m_xxxPage),在类CXXXSheet构造函数中添加

AddPage(&m_xxxCarPage);

从而将属性表页和属性表联系起来,记得有多少个属性表页就添加几次,还有两个构造函数都要添加AddPage代码。

第三步,最后可以在文档类中DoModal创建模式属性表。基本OK了。

 

(未完待续)

原创粉丝点击