1.視窗最大化、最小化的實現
當我們不能用標題欄的最大化、最小化及恢復按鈕而又需在其他的地方實現這些功能,可以在指定的訊息處理函式裡新增:
windowplacement wndpl;
windowplacement *pwndpl;
pwndpl = &wndpl;
getwindowplacement(pwndpl);
pwndpl->showcmd = sw_showminmized; //
實現視窗最小化
setwindowplacement(pwndpl);
其中getwindowplacement()
函式獲取當前視窗布局的結構
windowplacement
的結構變數指標,結構
windowplacement
定義為:
typedef struct tagwindowplacementwindowplacement;
其中的成員變數
showcmd
確定當前視窗的狀態,取值一般為:
·sw_hide
:隱藏視窗
·sw_minimize
:最小化指定的視窗
·sw_restore
:恢復原來的大小
·sw_show
:以原來的大小啟用並顯示
·sw_showmaximized
:啟用並最大化視窗
setwindowplacement()
函式就是按
windowplacement
的設定來顯示視窗
2.為什麼要使用getsafehwnd()函式
當我們想得到乙個視窗物件(
cwnd
的派生物件)指標的控制代碼(
hwnd
)時,最安全的方法是使用
getsafehwnd()
函式,通過下面的例子來看其理由:
cwnd *pwnd = findwindow(「explorewclass」,null); //
希望找到資源管理器
hwnd hwnd = pwnd->m_hwnd;//
得到它的
hwnd
這樣的**當開始得到的
pwnd
為空的時候就會出現乙個「
general protection error」,
並關閉應用程式,因為一般不能對乙個
null
指標訪問其成員,如果用下面的**:
cwnd *pwnd = findwindow(「explorewclass」,null); //
希望找到資源管理器
hwnd hwnd = pwnd->getsafehwnd();//
得到它的
hwnd
就不會出現問題,因為儘管當
pwnd
是null
時,getsafehwnd
仍然可以用,只是返回
null
,通過getsafehwnd()
的實現**就更清楚了:
_afxwin_inline hwnd cwnd::getsafehwnd() const
3.如何使程式處於極小狀態
如果我們不想讓程式的視窗被別人看見,就可以讓它保持在極小狀態:在恢復程式視窗的時候,
window
會傳送wm_queryopen
訊息,只要在其訊息處理函式裡返回
false
就可以了。
bool cmainframe::onqueryopen()
4.如何禁止和能用關閉按鈕
cmenu *pmenu = afxgetmainwnd()->getsystemmenu(false);
if(pmenu)
恢復時只需將
mf_grayed
改為mf_enabled
5.如何在程式中延時
方法一:
使用sleep
函式,如延時
2秒,用
sleep(2000);
方法二:使用
sleep
函式的不利在於延時期間不能處理其他的訊息,如果時間太長,就好象宕機一樣,利用
coledatetime
類和coledatetimespan
類實現延時就不會出現那樣的問題:
coledatetime start_time = coledatetime::getcurrenttime();
coledatetimespan end_time = coledatetime::getcurrenttime()-start_time;
while(end_time.gettotalseconds() <= 2)
這樣在延時的時候我們也能夠處理其他的訊息。
看了論壇裡的一些總結文章很好,我把裡面沒有怎麼看到的也寫了一點點出來,不知道有沒有重複,希望能有些微的作用.
VC程式設計經驗彙總 一
1.視窗最大化 最小化的實現 當我們不能用標題欄的最大化 最小化及恢復按鈕而又需在其他的地方實現這些功能,可以在指定的訊息處理函式裡新增 windowplacement wndpl windowplacement pwndpl pwndpl wndpl getwindowplacement pwnd...
VC程式設計經驗彙總 一
1.視窗最大化 最小化的實現 當我們不能用標題欄的最大化 最小化及恢復按鈕而又需在其他的地方實現這些功能,可以在指定的訊息處理函式裡新增 windowplacement wndpl windowplacement pwndpl pwndpl wndpl getwindowplacement pwnd...
VC程式設計經驗彙總 一
vc程式設計經驗彙總 一 1.視窗最大化 最小化的實現 當我們不能用標題欄的最大化 最小化及恢復按鈕而又需在其他的地方實現這些功能,可以在指定的訊息處理函式裡新增 windowplacement wndpl windowplacement pwndpl pwndpl wndpl getwindowp...