


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PB 中消息框的居中顯示(:獨(dú)孤求敗 2003-05-26)與大多數(shù)的開發(fā)環(huán)境相類似,erBuilder(以下簡稱 PB)中的 MessageBox 函數(shù)是不提供框居中顯框關(guān)閉后示功能的。但在 PB 中可以通過多線程技術(shù)來解決這個(gè)問題。由于 MessageBox 函數(shù)要在才能返回,所以無法使用線程同步技術(shù)。為此,在應(yīng)用程序的主線創(chuàng)建一個(gè)新線程,該線程將在指定的時(shí)間內(nèi)循環(huán)調(diào)用 FindWindowEx 函數(shù)來查找 MessageBox 函數(shù)生成的后,調(diào)用 MoveWindow 函數(shù)改變窗口位置使其居中???,在獲得框句柄在 PB 中實(shí)現(xiàn)多線程技術(shù),有兩種方法:一種是用 VC將寫入函數(shù)并編譯成動(dòng)態(tài)庫
2、供 PB 調(diào)用;另一種是用 PB 的 SharedObject 系列函數(shù)來實(shí)現(xiàn)多線程。本文基于 PB 的編程技術(shù),介紹第二種實(shí)現(xiàn)方法。SharedObject 系列函數(shù)和共享對象有關(guān)的函數(shù)包括:SharedObjectRegister、SharedObjectGet、SharedObjectUnregister 和 Sh aredObjectDirectory 函數(shù)。首先,用 SharedObjectRegister 函數(shù)初始化共享對象,并建立一個(gè)單獨(dú)的線程。如:SharedObjectRegister (“ccuo_thread” ,“thread1” )其中 ccuo_thread 是一個(gè)
3、共享的自定義類用戶對象的類名,thread1 是共享對象實(shí)例的共享名。如果 SharedObjectRegister 函數(shù)返回 Sucs,則新線程創(chuàng)建成功。然后,執(zhí)行指定代碼。有兩種方法讓新線程執(zhí)行指定的代碼:一種是在自定義類用戶對象的constructor事件中編寫,新線程創(chuàng)建后就會(huì)自動(dòng)執(zhí)行該事件;另法是使用SharedObjectGet 函數(shù)。該函數(shù)實(shí)現(xiàn)共享對象實(shí)例的,如:SharedObjectGet ( “thread1” ,inv_thread )其中 inv_thread 是用來共享對象實(shí)例的一個(gè)對象變量,要求與ccuo_thread 具有同一個(gè)類名。最后,通過使用t 語句,即以
4、inv_thre數(shù) of_function。ost of_function(agrs)的形式,異步調(diào)用共享對象的函在完成任務(wù)后,可以用 SharedObjectUnregister 函數(shù)中止線程,也可用 SharedObjectDirectory 函數(shù)列出所有有效的共享對象。函數(shù)調(diào)用部分本文所用 Win32 API 函數(shù)原型為:Function Ulongser32.dll”FindWindowA ( String lpClaame ,String lpWindowName ) Library “uFunction Function Function 32.dll” Function t ,下
5、面具體UlongUlongGetTickCount ( ) Library “kernel32.dll”GetDesktopWindow ( ) LibraryGetWindowRect ( Ulong hWnd“user32.dll”,ref stc_rect lpRect ) Library “userMoveWindow ( Ulong hWnd ,) Library “user32.dll”X ,Y ,nWidth ,nHeighbRepa如何實(shí)現(xiàn)消息框的居中顯示:/對象變量ccuo_thread lccuo_thread/創(chuàng)建新線程SharedObjectRegister (ccuo
6、_thread ,thread_center )/實(shí)例SharedObjectGet (thread_center ,lccuo_thread )/調(diào)用窗口居中函數(shù)lccuo_thre/創(chuàng)建消息 MessageBox/中止線程ost of_center (32770 ,Demostration ,2000 )框( Demostration ,Copyright(c) 2001 by Y.L.Sun )SharedObjectunRegister ( thread_center )函數(shù)實(shí)現(xiàn)部分實(shí)現(xiàn)窗口居中顯示的函數(shù)是自定義類用戶對象 ccuo_thread 的對象函數(shù) of_center,其實(shí)現(xiàn)
7、代碼如下:ccuo_thread.of_center ( String lpclaame ,Stringlpwindowname , Ulongdwtimeout ) return框的類名(32770)框的標(biāo)題/lpclaame: 消息/lpwindowname: 消息/dwtimeout: 超時(shí)計(jì)數(shù)Ulong lul_hwnd /存放消息框的句柄Ulong lul_start /計(jì)時(shí)開始時(shí)刻的值 lul_start = GetTickCount ( ) /計(jì)時(shí)開始 do/查找頂層窗口lul_hwnd=FindWindowA ( lpclaame ,lpwindowname )/找到頂層窗口后
8、,跳出循環(huán)if lul_hwnd 0 then exit/判斷是否已超時(shí)loop while GetTickCount( )lul_start dwtimeout/沒有找到消息框if lul_hwnd = 0 then return falseelse/框居中return of_center ( 0 ,lul_hwnd ) end ifof_center 的重載函數(shù)代碼如下:ccuo_thread.of_center ( Ulong hwndp ,Ulong hwndc/hwndp:父窗口的句柄,值為 0 時(shí)認(rèn)為是桌面/hwndc:子窗口的句柄 li_x /窗口的 X 坐標(biāo) li_y /窗口的
9、 Y 坐標(biāo)stc_rect lstc_parent /父窗口的 4 邊坐標(biāo)stc_rect lstc_child /子窗口的 4 邊坐標(biāo)/值為 0 時(shí)認(rèn)為是桌面if hwndp = 0 then hwndparent = GetDesktopWindow ( )/獲得窗口的 4 邊坐標(biāo)if not GetWindowRect ( hwndcurrent ,lstc_child ) returnthen return falseif not GetWindowRect ( hwndparent ,lstc_parent ) then return falseli_x = ( lstc_parent.right lstc_parent.left ) ( lstc_child.right lstc_child.left ) /2li_y = ( lstc_parent.bottom lstc_parent.top ) ( lstc_child.bottom lstc_child.top ) /2/計(jì)算子窗口的 X、Y 坐標(biāo)if li_x 0 or li_y 0 then return false/移動(dòng)子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)材料解除合同范本
- 化妝合同范本
- 代理雨鞋采購合同范本
- 獸藥委托加工合同范本
- 公租房出售合同范本
- 代理工程合同范本
- 買新房認(rèn)購合同范例
- 2024年洛陽市新安縣龍?zhí)洞髰{谷荊紫仙山景區(qū)招聘考試真題
- 農(nóng)業(yè)技術(shù)人員服務(wù)合同范本
- 2024年菏澤市勞信就業(yè)服務(wù)有限公司招聘制醫(yī)院人員考試真題
- 中國電信行業(yè)人工智能行業(yè)市場調(diào)研及投資規(guī)劃建議報(bào)告
- 水幕噴淋系統(tǒng)的工作原理與應(yīng)用
- 門樓施工方案
- 全國職業(yè)院校技能大賽高職組(康復(fù)治療技術(shù)賽項(xiàng))考試及答案
- 2024年08月河北唐山銀行第二批社會(huì)招考筆試歷年參考題庫附帶答案詳解
- 2024年山東海洋集團(tuán)有限公司社會(huì)招聘考試真題
- 《感冒中醫(yī)治療》課件
- 研發(fā)費(fèi)用管理制度內(nèi)容
- 壓力容器設(shè)計(jì)委托書
- 《眉毛的基本技法》課件
- 2025年幼兒園膳食工作計(jì)劃
評論
0/150
提交評論