掌握windows基於訊息驅動的視窗應用程式設計的基本方法,掌握視窗程式資源的概念與設計,掌握常用的訊息的程式處理方法,掌握文字圖形輸出相關函式程式設計。掌握設計的基本方法(選項),掌握時鐘訊息設計動畫程式(選項)
利用windows基於訊息驅動的視窗應用程式設計的基本方法,利用常用的訊息程式處理方法,設計乙個多執行緒程式,然後用時鐘動畫將各執行緒的執行過程直觀的表現出來。
操作環境:安裝有windows作業系統pc機一台,實驗環境為vs(任何版本都行).
1.在vs中,生成乙個空白的win32專案,了解win32的訊息驅動,學習視窗程式資源的概念與設計,並為程式設計乙個位圖圖示。
2. 觀察win32程式基本結構,了解常用的訊息的程式處理方法,掌握文字圖形輸出相關函式程式設計,並練習文字與圖形的輸出。
3.設計並構建程式使用者介面
選單欄
執行緒設定對話方塊
選單與對話方塊函式如下:
// 分析選單選擇:
lresultcallbackwndproc(hwndhwnd, uintmessage, wparamwparam, lparamlparam)
break;
caseidreset:
pausecount=resumethread((handle)threadid[treatwith]);
pausecount=resumethread(threadhandle[treatwith]);
if(pausecount==-1)
break;
}
break;
caseidm_exit:
destroywindow(hwnd);
break;
default:
returndefwindowproc(hwnd, message, wparam, lparam);
}
break;
casewm_size:
wndwidthsize=loword(lparam);
wndhighsize=hiword(lparam);
break;
casewm_paint:
hdc = beginpaint(hwnd, &ps);
//textout(hdc,100,50,_t("south west university"),wcslen(_t("south west university")));
// todo: 在此新增任意繪圖**...
endpaint(hwnd, &ps);
break;
casewm_destroy:
postquitmessage(0);
break;
default:
returndefwindowproc(hwnd, message, wparam, lparam);
}
return0;
}
// "開始"對話方塊的訊息處理程式。
int_ptrcallbackabout(hwndhdlg, uintmessage, wparamwparam, lparamlparam)
if(loword(wparam) == idpause)
if(loword(wparam) == idreset)
if(loword(wparam) == idstart)
break;
}
return(int_ptr)false;
}
4.編寫多執行緒建立函式,建立多個執行緒,編寫動畫繪圖函式繪製圖形,每個執行緒都呼叫繪圖函式,在使用者區中繪製動畫,以直觀表現執行緒的執行。具體**如下:
//執行緒建立
voidcreatethreadstart(hwndhwnd)
else
threadxuhao++;
}
}
//繪圖
dwordwinapipaintthread(lpvoidlpparam)
releasedc(hwnd,hdc);
return1;
}
五. 實驗結果
程式執行結果如下:
其中,程序3被暫停。
Windows多執行緒程式設計
一 問題的提出 編寫乙個耗時的單執行緒程式 新建乙個基於對話方塊的應用程式singlethread,在主對話方塊idd singlethread dialog新增乙個按鈕,id為idc sleep six second,標題為 延時6秒 新增按鈕的響應函式,如下 void csinglethread...
windows多執行緒程式設計
程序 乙個執行的程式,記憶體,cpu時間等都歸程序所有.執行緒 cpu排程的最小單位,乙個程序內的多個執行緒共享4g記憶體.程式的乙個執行路徑 1.最基礎的使用方法.createthread,exitthread,closehand include include createthread,exit...
Windows多執行緒程式設計
函式原型 handlewinapi createthread lpsecurity attributes lpthreadattributes,size t dwstacksize,lpthread start routine lpstartaddress,lpvoid lpparameter,dw...