zoukankan      html  css  js  c++  java
  • 如何优雅的写UI——(2)MFC下基于CFormView的文档视图程序

     在MFC中可以创建多种类型的窗口程序,如对话框程序、单文档结构程序(非文档/视图结构)、单文档(文档/视图结构)以及多文档视图结构程序等。

    在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对话框的程序不支持视图类,有些功能实现起来会麻烦许多。此时我们可以使用CFormView作为基类来创建单文档(非文档/视图结构)和单文档(文档/视图结构)的程序。

    一、使用MFC向导创建程序

    (1)单文档(文档/视图结构)

    (2)不需要状态栏和工具栏

    (3)使用CFormView作为基类

    (4)使用向导创建好的程序窗口

    二、程序初始化设置

    在这个由MFC向导创建的程序窗口中有些功能或许是我们不想要的,比如视图标题、视图凹陷效果、菜单栏、鼠标拖动窗口边框调整窗口大小等。

     1. 不显示视图标题、禁止以拖动方式调整窗口大小、禁用菜单栏

    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
        if( !CFrameWnd::PreCreateWindow(cs) )
            return FALSE;
        // TODO: 在此处通过修改
        //  CREATESTRUCT cs 来修改窗口类或样式
        cs.style &= ~FWS_ADDTOTITLE;  /* 不显示视图标题 */
        cs.style &= ~WS_THICKFRAME; /* 禁止以拖动方式调整窗口大小 */
        cs.hMenu = NULL;
        return TRUE;
    }

    2. 去除视图凹陷效果

    BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs)
    {
        // TODO: 在此处通过修改
        //  CREATESTRUCT cs 来修改窗口类或样式
        cs.style &= ~WS_BORDER; /* 去除视图凹陷效果 */
    
        return CFormView::PreCreateWindow(cs);
    }

    3. 修改程序窗口标题

    BOOL CTestApp::InitInstance()
    {
    
        ....
    
        ....
    
        ....
    
        m_pMainWnd->SetWindowText( L"测试程序" ); /* 修改程序窗口标题 */
    
     
    
        // 唯一的一个窗口已初始化,因此显示它并对其进行更新
        m_pMainWnd->ShowWindow(SW_SHOW);
        m_pMainWnd->UpdateWindow();
        // 仅当具有后缀时才调用 DragAcceptFiles
        //  在 SDI 应用程序中,这应在 ProcessShellCommand  之后发生
        return TRUE;
    
    }

    结果:

    下一篇我会教大家如何动态创建好看的选项卡

    代码:tab.zip

  • 相关阅读:
    移动Oracle数据库表空间文件。
    Web页面嵌入复杂WinForm控件权限问题
    关于bleand2000下面oracle服务器优化
    祝大家新年快乐!
    CentOS安装配置MongoDB及PHP MongoDB 扩展安装配置 新风宇宙
    FastDFS介绍和配置过程 新风宇宙
    ubuntu下安装redisserver和phpredis 新风宇宙
    PHP安装fastDFS扩展 新风宇宙
    用socket发送流数据示用 php://input? 接受post数据(可实现php和c/c++数据通讯) 新风宇宙
    linux操作系统下c语言编程入门 新风宇宙
  • 原文地址:https://www.cnblogs.com/ye-ming/p/9266330.html
Copyright © 2011-2022 走看看