//========================================================================
//TITLE:
// 讓無效按鈕不再困擾
//AUTHOR:
// norains
//DATE:
// Wednesday 16-January-2008
//Environment:
// VS2005 + SDK-WINCE5.0-MIPSII
// EVC + SDK-WINCE5.0-MIPSII
//========================================================================
相信很多朋友會有這麼一個經驗,窗口中有這麼一個按鈕,按下的時候會進行相關的運算處理,但在處理的過程中不打算讓用戶再次點擊該按鈕,所以很當然地在相關運算處理開始前調用EnableWindow令按鈕無效,計算完畢之後再次調用EnableWindow恢復.邏輯沒有任何問題,所有人都會這麼想,難道不是麼?只是,結果真的是如此麼?我們不妨舉個實例看看.
我們的實例中有兩個按鈕,一個顯示Exit,一個顯示Disable,前者點擊時即退出程序,後者先令Exit按鈕無效,然後Sleep一段時間用來模擬耗時較久的工作,接著恢復Exit按鈕狀態.
主要代碼如下(完整的工程代碼可在此下載:http://download.csdn.Net/source/337027):
//消息過程
LRESULT CMainWnd::WndProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
switch(wMsg)
{
case WM_COMMAND:
{
if(HIWORD(wParam) == BN_CLICKED && LOWord(wParam) == IDC_BTN_EXIT)
{
&nb