VC程式設計經驗彙總 一

2021-04-16 07:31:15 字數 2572 閱讀 3857

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...