实现标题条的显示与隐藏
作者:rockieyung
有時候為了實際的顯示面積大一些或其他的一些原因需要對標題條進行隱藏或顯示。本文使用一個簡單的例子,說明如何在MFC應用程序的框架下來實現它。其中使用API的方法也可用于其他的Windows應用開發環境。
CWnd類提供了一個函數ModifyStyle(),用于改變窗口的風格,原型如下:
BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 );
其中參數dwRemove為希望去掉的窗口風格,參數dwAdd為希望加上的窗口風格,參數nFlags用于確定窗口的大小與位置。
以下以一個MFC MDI應用為例說明:(功能和代碼為啥不分開,感覺上不能1、2、3排起來)
1. 添加一個菜單項,ID為ID_VIEW_TITLE_BAR,并用類向導為CMainFrame生成消息函數OnViewTitleBar和OnUpdateViewTitleBar。
2. 為CMainFrame添加一個BOOL型的成員變量m_bViewTitleBar,并在構造函數中賦為TRUE
3. 為OnViewTitleBar添加如下實現
4. 為OnUpdateViewTitleBar添加如下實現
void CMainFrame::OnUpdateViewTitleBar(CCmdUI* pCmdUI) {pCmdUI->SetCheck(m_bViewTitleBar); }ModifyStyle在內部實際調用了三個API函數,在OnViewTitleBar也可以使用API來直接實現。
void CMainFrame::OnViewTitleBar() {m_bViewTitleBar = !m_bViewTitleBar;LONG lStyle = ::GetWindowLong(this->m_hWnd, GWL_STYLE);if (m_bViewTitleBar == FALSE) { // 隱藏TitleBar::SetWindowLong(this->m_hWnd, GWL_STYLE, lStyle & ~WS_CAPTION);::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); } else { // 顯示TitleBar::SetWindowLong(this->m_hWnd, GWL_STYLE, lStyle | WS_CAPTION);::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); }本文源程序在Win2000 SP3 + VC6.0中調試通過。
總結
以上是生活随笔為你收集整理的实现标题条的显示与隐藏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐!计算机视觉最适合入门的 8 本教程
- 下一篇: 收藏!AI 最全干货超级大列表,100+