以下是乙個例項,
說明:_showbmpthread proc uses ebx esi edi,_lparam(這種格式是win32api中指定的格式,注意那個引數,_lparam,必須有(1個))
呼叫過程: _showbmp proc hwinmain:dword(裡面最關鍵的就是 invoke createthread,null,0,addr _showbmpthread,hwinmain,null,addr @dwthreadid)這一句,注意hwinmain的引數就是傳給_lparam使用的。然後就是 invoke closehandle,eax
所以簡單一點描述就是這樣子的
_showbmpthread proc uses ebx esi edi,_lparam
;....執行緒工作的內容
ret_showbmpthread endp
_showbmp proc
local @dwthreadid
;執行緒呼叫 dwparamter 就是傳給_lparam的引數,這裡為null,倒數第三個引數。
invoke createthread,null,0,addr _showbmpthread,null,null,addr @dwthreadid
invoke closehandle,eax
ret_showbmp endp
應用中的例項見下面:
_showbmpthread proc uses ebx esi edi,_lparam
local hwinmain:dword
local bmp:hbitmap
local mdc:hdc
local hdc:hdc
mov eax,dword ptr _lparam
mov hwinmain,eax
pushad
;1 首先把點陣圖載入:
invoke loadimage,null,addr szbmppath,image_bitmap,0,0,lr_loadfromfile
mov bmp,eax
mov edx,hwinmain;目標窗體控制代碼
invoke getdc,edx
mov hdc,eax
;2 從你的dc中建立記憶體dc
invoke createcompatibledc,hdc;注意這個hdc由上面getdc函式獲取,如果在在哪個窗體畫圖就獲取哪個窗體的dc通過控制代碼
mov mdc,eax
;3 把點陣圖選入記憶體dc
invoke selectobject,mdc,bmp
;4 帖圖
invoke bitblt,hdc,50,90,500,400,mdc,0,0,srccopy
invoke deletedc,mdc
invoke releasedc,edx,hdc
popad
ret_showbmpthread endp
_showbmp proc hwinmain:dword
local @dwthreadid
invoke createthread,null,0,addr _showbmpthread,hwinmain,null,addr @dwthreadid
invoke closehandle,eax
ret_showbmp endp
在WPF程式中使用多執行緒技術
在wpf應用程式中使用多執行緒的方式與windows forms很類似,區別在於,如果需要更新主線程ui上面的元素,需要用乙個特殊的方法 this.dispatcher.invoke 下面是乙個簡單的範例,演示了如何執行乙個簡單的方法,它使用了callback的機制進行多執行緒非同步執行。func ...
在WPF程式中使用多執行緒技術
在wpf應用程式中使用多執行緒的方式與windows forms很類似,區別在於,如果需要更新主線程ui上面的元素,需要用乙個特殊的方法 this.dispatcher.invoke 下面是乙個簡單的範例,演示了如何執行乙個簡單的方法,它使用了callback的機制進行多執行緒非同步執行。func ...
c 中使用多執行緒
using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using system.data using system.threa...