• Graphics—界面设置笔记


    最近在较深入研究OpenGL,决定闲余抽一些时间把自己做小绘图系统的经验记录下来,同时也算是一种放松方式吧。

    言归正传,我们接着上一个配置好的程序。

    PS:下面的修改对应的是ChildFrm.h

    一、如果点击黑框的放缩按钮,屏幕会闪烁。这些的话,体验肯定不好。


    解决:
    在View类添加函数OnEraseBkgnd()
    我们设置每次都默认擦除背景。

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

    二、或者不少人希望绘图界面保持这个样子


    解决:
    (1)去掉界面的放缩以及关闭的按钮
    添加函数OnCreate()

    int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	// 隐藏最大化,最小化,关闭按钮  
    	ModifyStyle(WS_SYSMENU, 0);
    
    
    	// 隐藏标题栏  
    	ModifyStyle(WS_CAPTION, 0);
    	// TODO:  在此添加您专用的创建代码
    
    	return 0;
    }
    


    (2)将子窗口最大化,并且去掉Study(-Study1)里面被括起来的东西
    修改函数PreCreateWindow()

    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;
    }
    

    这样就OK了!

    PS:下面的修改对应的是MainFrm.h

    三、父窗口上的标题Study是不是很low?

    解决:修改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;
    }
    

    四、很多软件的初始界面基本上是占满屏幕的

    解决:在OnCreate()函数return 0; 前面添加

    //全屏显示
    RECT rc;
    ::GetWindowRect(::GetDesktopWindow(), &rc);
    this->MoveWindow(&rc);
    

    五、有没有发现右下角的NUM很low?我们把它设置成时间不行吗?

    解决:
    (1)在OnCreate()函数添加

    SetTimer(1, 10, NULL);
    

    (2)在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);
    }
    

    界面小笔记先记录到这里,以后可能会不断更新内容。

  • 相关阅读:
    试下七牛云CDN
    【问题】 Cocos3.x 左边和上方有黑边,任意点一下才能对齐
    【MySQL】MySQL8 密码问题
    【测绘每日一题】白塞尔公式应用
    【GIS】(转载)EPSG:900913 转换 EPSG:4326
    python 三引号回车不能自动生成函数注释的问题
    python fastapi + uvicorn 记录日志的最佳实践,结合nb_log
    支持pycahrm代码自动补全的库才是好库,不能代码补全的库很垃圾。fastapi暴击flask
    【PG】小麦苗PGCA+PGCE第9期证书邮寄
    EXSI的运维管理
  • 原文地址:https://www.cnblogs.com/Czhenyu/p/6432931.html
Copyright © 2020-2023  润新知