一、最大化子窗口並隱藏標題欄:
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);
}
最後的效果是這樣的: