OpenGL + MFC界面设置优化

原创 2017年11月07日 17:27:48

一、最大化子窗口并隐藏标题栏:
1.在类视图中打开CChildFrame的类向导,添加OnCreate函数:
这里写图片描述
这里写图片描述
(On…什么的函数都是在消息那个标签里,输入后面的单词就能快速查找到了)
键入代码:

int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    // 隐藏最大化,最小化,关闭按钮  
    ModifyStyle(WS_SYSMENU, 0);


    // 隐藏标题栏  
    ModifyStyle(WS_CAPTION, 0);
    // TODO:  在此添加您专用的创建代码

    return 0;
}

这里注意一下,如果是VS2010以及之前的版本,隐藏按钮的函数要注释掉,否则会编译报错。(在学校机房碰见的问题)

2.将子窗口最大化,并隐藏标题(这个标题显示在主窗口的标题旁,看起来很难看,建议隐藏了)(类向导虚函数里)

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    // TODO:  在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
    if (!CMDIChildWnd::PreCreateWindow(cs))
        return FALSE;
    cs.style &= ~FWS_ADDTOTITLE | WS_VISIBLE | WS_MAXIMIZE;//取消窗口上的文档标题
    cs.style |= WS_VISIBLE | WS_MAXIMIZE; // 最大化
    return TRUE;
}

二、修改主窗口的标题:
那当然是修改主窗口的PreCreateWindow函数啦。
这里写图片描述

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if (!CMDIFrameWnd::PreCreateWindow(cs))
        return FALSE;
    // TODO:  在此处通过修改
    //  CREATESTRUCT cs 来修改窗口类或样式
    cs.style &= ~FWS_ADDTOTITLE | WS_VISIBLE | WS_MAXIMIZE;//取消窗口上的文档标题
    cs.lpszName = _T("直线剪裁"); // 文件上方标题重命名
    return TRUE;
}

三、启动程序时自动占满屏幕(我的电脑比较奇怪,这个操作用起来效果不好):
仍然是修改CMainFrame类,在OnCreate函数的return 0前面加上以下代码:

RECT rc;
    ::GetWindowRect(::GetDesktopWindow(), &rc);
    this->MoveWindow(&rc);

四、右下角的NUM太丑了,改成显示当前时间好了:
在CMainFrame中添加Timer函数:
这里写图片描述

void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    CTime t = CTime::GetCurrentTime();
    CString str = t.Format("当前时间 %H:%M:%S");

    CClientDC dc(this);
    CSize sz = dc.GetTextExtent(str);
    int index = 0;
    index = m_wndStatusBar.CommandToIndex(ID_INDICATOR_NUM);
    m_wndStatusBar.SetPaneInfo(index, ID_INDICATOR_NUM, SBPS_NORMAL, sz.cx);
    m_wndStatusBar.SetPaneText(index, str);
    CMDIFrameWnd::OnTimer(nIDEvent);
}

然后在窗口创建时启动这个函数,在OnCreate里添加:

SetTimer(1, 10, NULL);

五、去掉多余的顶部菜单:
这里写图片描述
右键删除掉不想要的菜单就行啦。


六、删除工具栏:(OnCreate函数注释掉下面的代码)

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    /*if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0("未能创建工具栏\n");
        return -1;      // 未能创建
    }*/

    if (!m_wndStatusBar.Create(this))
    {
        TRACE0("未能创建状态栏\n");
        return -1;      // 未能创建
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

    // TODO:  如果不需要可停靠工具栏,则删除这三行
    /*m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);*/


    return 0;
}

七、解决缩放窗口闪烁的问题:
在View类修改消息函数OnEraseBkgnd()

BOOL CMFCTestView::OnEraseBkgnd(CDC* pDC)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    return true;
    // return CView::OnEraseBkgnd(pDC);
}

最后的效果是这样的:
这里写图片描述

版权声明:如果感觉写的不错,转载标明出处链接哦~

OpenGL在MFC中的使用总结(一)——基本框架

项目中要画3D显示的模型,于是要用到OpenGL,加上是在MFC中,而且是在MFC中的ActiveX中使用,再而且鉴于他们程序主框架的设定,常规的方法还不一定能实现。所以还是查过不少资料,在此一一总结...
  • lyh03601
  • lyh03601
  • 2014年08月21日 16:10
  • 3567

MFC 中配置OpenGL环境

MFC为编写Windows应用程序提供了极大的方便,程序员在编写Windows应用程序时,只需要几步就可以把一个程序的框架建立起来.该类极大的提高了编程者的开发效率,是个具有极大实用价值的工具. ...
  • xiaoge132
  • xiaoge132
  • 2016年03月09日 09:45
  • 2451

VS2013用MFC制作包含菜单的OpenGL程序

打开VS2013新建项目 MFC程序:命名为:MFCOpenGLDemo 单击确定 下一步建一个基于对话框的程序 单击完成:...
  • Tan_HandSome
  • Tan_HandSome
  • 2015年08月01日 09:42
  • 1636

用MFC做漂亮界面之美化对话框

在windows开发当中做界面的主要技术之一就是使用MFC,通常我们看到的QQ,360,暴风影音这些漂亮的界面都可以用MFC来实现。今天我们来说一下如何用MFC美化对话框,默认情况下,对话框的背景如下...
  • u011711997
  • u011711997
  • 2016年09月13日 15:37
  • 9591

openGL+MFC导致闪烁、不刷新等问题的解决方法

我们知道,在窗口中拖动一个图形的时候,由于边画边显示,会出现闪烁的现象。在GDI中解决这个问题较为复杂,通过在内存中生成一个内存DC,绘画时让画笔在内存DC中画,画完后一次用Bitblt将内存DC“贴...
  • wang15061955806
  • wang15061955806
  • 2015年11月16日 19:23
  • 1274

基于MFC完整的OpenGL框架步骤

1. 新建一个MEC单文档应用程序,如下各图所示, 2. 更改头文件,双击WelecomView.h,在程序前面加上以下两个头文件(W...
  • u013232740
  • u013232740
  • 2015年01月28日 14:52
  • 1432

如何用MFC做漂亮的界面

本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理; 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3...
  • ShiQW5696
  • ShiQW5696
  • 2017年12月25日 13:42
  • 293

VS 2012环境下使用MFC进行OpenGL编程

VS 2012下使用MFC+OpenGL基本步骤 引子:以前一直惧怕MFC感觉它是一个非常复杂的东西,更不用说去用它来和OpenGL结合了,以前是一直羡慕别人用MFC创建一个窗口进行OpenGL绘图...
  • bbppbb
  • bbppbb
  • 2014年04月22日 21:11
  • 6432

Opengl与MFC结合显示图像

Opengl与MFC结合显示图像。下面是总结的一个类: //头文件 #if !defined(AFX_OPENGL_H__4D4A8C3F_A907_4A63_B205_B839E456A...
  • xbeinonlinkejidaxue
  • xbeinonlinkejidaxue
  • 2014年11月06日 21:56
  • 1030

MFC 使用Opengl贴图

用opengl库在mfc 对话框程序中创建简单的opengl程序。 步骤: 1.用vs2010创建mfc dialog对话框程序 直接点击完成,创建工程结束。 2.删掉对话框上面...
  • sz76211822
  • sz76211822
  • 2017年02月22日 19:40
  • 629
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL + MFC界面设置优化
举报原因:
原因补充:

(最多只允许输入30个字)