计算机图形学-MFC图形界面优化
首先修改ChildFrm即子窗口
一、擦除背景
在View类添加函数OnEraseBkgnd()
我们设置每次都默认擦除背景。
bool CStudy01View::OnEraseBkgnd() { return true; // return CView::OnEraseBkgnd(pDC); }
二、去掉界面的放缩即关闭按钮
在ChildFrame类中添加OnCreat()函数
int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 // 隐藏最大化,最小化,关闭按钮 ModifyStyle(WS_SYSMENU, 0); // 隐藏标题栏 ModifyStyle(WS_CAPTION, 0); // TODO: 在此添加您专用的创建代码 return 0; }
(2)将子窗口最大化
修改函数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; }
修改后的效果,是不是漂亮很多呢
下面对MainFrm修改,即主窗口
(1)修改标题
修改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;
}
(2)占满屏幕
在OnCreate()函数return 0; 前面添加
//全屏显示 RECT rc; ::GetWindowRect(::GetDesktopWindow(), &rc); this->MoveWindow(&rc);
(3)右下角时间设置
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); }