欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
VC 單文檔程序全屏顯示及恢復--孤身我路!(My Blog)


引言

在編輯類(lèi)軟件或程序代碼編輯程序中經(jīng)常要遇到一些長(cháng)度特別大的文本或代碼,尤其是對于程序源碼的編輯,如果編輯界面太小,則需要頻繁拉動(dòng)滾動(dòng)條,對于程序員而言是很不情愿的,因為這樣會(huì )打斷程序的設計思路、影響編程的效果。因此不少軟件都具備了全屏放大的功能,將編輯界面放大到全屏幕,盡最大限度地減少對滾動(dòng)條的依賴(lài)程度。相信不少程序員一定非常喜歡在VC的全屏編輯狀態(tài)下編程,本文就以Visual C++ 6.0為開(kāi)發(fā)環(huán)境將普通的單文檔編輯視圖程序擴展為全屏編輯功能。

程序的設計思路

普通常規程序之所以在最大化的情況下沒(méi)能實(shí)現全屏,是由于狀態(tài)條、工具條、系統菜單、標題欄等幾個(gè)窗口分別占據了一部分屏幕空間,所以實(shí)現視圖的全屏顯示首先要把以上幾個(gè)窗體隱藏起來(lái),然后才可以考慮將視圖最大化的問(wèn)題。

隱藏狀態(tài)欄、工具條,可以將其當作一個(gè)浮動(dòng)的窗體,只需通過(guò)各自的句柄將ShowWindow()函數的參數設成SW_HIDE即可將這幾個(gè)窗體隱藏,同視圖非常類(lèi)似,在需要顯示的時(shí)候可以用SW_SHOW標志將其顯示出來(lái)。在此需要說(shuō)明的是在進(jìn)行全屏操作之前需要將當前的視圖設置保存好,這在從全屏恢復為原始狀態(tài)時(shí)需要用到。該操作也比較簡(jiǎn)單,只需簡(jiǎn)單調用API函數GetWindowRect()即可。至于標題欄的隱藏就不是簡(jiǎn)單的隱藏窗口了,這涉及到窗體風(fēng)格的修改,要把WS_CAPTION風(fēng)格從現有的窗體風(fēng)格中剝離出來(lái)。這可以先用GetWindowLong()獲取到當前的窗體風(fēng)格,然后通過(guò)邏輯運算將WS_CAPTION風(fēng)格從中剝離開(kāi)來(lái),最后再用SetWindowLong()函數將修改后的窗體風(fēng)格設置為當前的窗體風(fēng)格。至于系統菜單的隱藏也可以很方便的加以實(shí)現:先保存當前菜單,然后將菜單設置為""就實(shí)現了菜單的隱藏。各個(gè)窗體都隱藏好后剩下的工作就是將編輯視圖放大到滿(mǎn)屏,可以用this來(lái)獲取當前的視圖指針,并把ShowWindow ()函數的參數設為SW_SHOWMAXIMIZED就最終完成了整個(gè)全屏放大的全過(guò)程。

至于從全屏恢復到初始狀態(tài)則完全是上述過(guò)程的逆操作:通過(guò)邏輯運算把WS_CAPTION風(fēng)格加入到窗體風(fēng)格中,恢復標題欄的顯示;通過(guò)將狀態(tài)條和工具條的ShowWindow()函數的標志參數設成WM_SHOW將其分別予以恢復;系統菜單也可以通過(guò)從保存好的原始菜單中讀取并重新設置來(lái)恢復其原始面貌?,F在僅把隱藏的各個(gè)窗體顯示了出來(lái),窗體還是處于滿(mǎn)屏狀態(tài),所以還要通過(guò)MoveWindow()函數把窗體的位置恢復到全屏前的狀態(tài),這也是我們?yōu)楹卧谌習r(shí)要保存窗體的一些原始參數的原因。

三、 程序的具體實(shí)現

前面部分在大體思路上對程序的設計實(shí)現進(jìn)行了粗略的分析,但在實(shí)際編程中有不少的細節還未考慮進(jìn)去,下面就根據前面的程序設計思路對其進(jìn)行編碼,并結合其部分關(guān)鍵代碼進(jìn)行講解說(shuō)明,以便于更好的理解本程序的實(shí)現方法:

全屏顯示部分:

//通過(guò)設置SW_HIDE參數隱藏當前的工具條、任務(wù)欄
m_bToolBarWasVisible=(m_wndToolBar.IsWindowVisible()!=0);
m_wndToolBar.ShowWindow(SW_HIDE);
m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0);
m_wndStatusBar.ShowWindow(SW_HIDE);
……
//
由于在全屏狀態(tài)下沒(méi)有系統菜單和工具條,所以需要顯示一個(gè)浮動(dòng)的工具條按鈕用于//從全屏狀態(tài)下返回到正常狀態(tài)。
//
首先創(chuàng )建一個(gè)工具條對象,并把一個(gè)工具條資源裝載進(jìn)來(lái),同時(shí)對工具條的風(fēng)格進(jìn)行//設置:
m_pwndFullScreenBar=new CToolBar;
m_pwndFullScreenBar->Create(this);
m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN);
m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//
浮動(dòng)按鈕的效果
m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT);
m_pwndFullScreenBar->EnableDocking(0);
//
設置返回到正常狀態(tài)下的按鈕的位置
CPoint pt(300,200);
FloatControlBar(m_pwndFullScreenBar,pt);
//
在放大到滿(mǎn)屏前預先保存當前的窗口位置
GetWindowRect(&m_mainRect);
//
通過(guò)改變窗口風(fēng)格來(lái)隱藏標題欄
LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
style&=~WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
int screenx=GetSystemMetrics(SM_CXSCREEN);
int screeny=GetSystemMetrics(SM_CYSCREEN);
//
重新改變大?。?/font>
SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER);
style=::GetWindowLong(m_hWnd,GWL_STYLE);
m_bChildMax=(style & WS_MAXIMIZE)?true:false;
//
保存原有的系統菜單,并將當前菜單設置為空
CMenu* pOldMenu=GetMenu();
m_OrgMenu.Attach(pOldMenu->Detach());
SetMenu((CMenu*)NULL);
//
在其他窗體隱藏好后,將編輯視圖放大到滿(mǎn)屏
this->ShowWindow (SW_SHOWMAXIMIZED);
……

至于從全屏恢復到初始狀態(tài)的這部分代碼則相對比較簡(jiǎn)單,只需依次將隱藏的各個(gè)窗體和菜單恢復出來(lái)并將視圖移動(dòng)到原來(lái)大小即可,該段代碼許多地方同放大到全屏時(shí)的代碼相似,只是參數有所差異而已。下面就是恢復部分的主要代碼:

……
//
將保存的系統菜單恢復出來(lái)
SetMenu(&m_OrgMenu);
m_OrgMenu.Detach();
//
釋放掉在全屏時(shí)創(chuàng )建的工具條指針對象,由于是用new創(chuàng )建的,在系統堆中為指針?lè )?span lang="EN-US">//
配地址空間,在程序退出時(shí)不能自動(dòng)釋放,所以必須要用delete顯式地進(jìn)行釋放
delete m_pwndFullScreenBar;
//
把前面剝離出去的WS_CAPTION風(fēng)格在加入到窗體風(fēng)格中。
LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
style|=WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
//
顯示工具條、任務(wù)欄
if(m_bToolBarWasVisible)
m_wndToolBar.ShowWindow(SW_SHOW);
if(m_bStatusBarWasVisible)
m_wndStatusBar.ShowWindow(SW_SHOW);
MoveWindow(&m_mainRect);
RecalcLayout();
……

小結:

本文主要是針對單文檔框架的程序進(jìn)行設計的,由于不涉及到子窗體,因此比較簡(jiǎn)單。對于多文檔的全屏放大,實(shí)現方法在總體思路上是與之相一致的。只是在處理全屏顯示與恢復時(shí)需要將程序子框架也響應的進(jìn)行放大與縮小,標題欄也要通過(guò)改變窗口風(fēng)格的方式來(lái)隱藏與恢復顯示。本程序對于其他基于非編輯視圖的程序也是適用的。本文所述程序在Windows 2000 Professional下由Microsoft Visual C++ 6.0編譯通過(guò)。


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
窗體最大化
[轉載]VC?子窗口全屏顯示
在MFC中隱藏對話(huà)框 - 風(fēng)向標的日志 - 網(wǎng)易博客
如何讓基于對話(huà)框的MFC程序啟動(dòng)后自動(dòng)隱藏對話(huà)框--==>肯肯編程小屋<==
啟動(dòng)隱藏主窗口的方法2
C++ 讓窗體最大最小化
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久