PB中消息對話框的居中顯示
發表于:2008-10-14來源:作者:點擊數:
標簽:對話框
SharedObject系列函數和共享對象有關的函數包括:SharedObjectRegister、SharedObjectGet、SharedObjectUnregister和SharedObjectDirectory函數。 首先,用SharedObjectRegister函數初始化共享對象,并建立一個單獨的線程。如: SharedObjectRegister (“ccu
SharedObject系列函數和共享對象有關的函數包括:SharedObjectRegister、SharedObjectGet、SharedObjectUnregister和SharedObjectDirectory函數。
首先,用SharedObjectRegister函數初始化共享對象,并建立一個單獨的線程。如:
SharedObjectRegister (“ccuo_thread” ,“thread1” ) 其中ccuo_thread是一個共享的自定義類用戶對象的類名,thread1是共享對象實例的共享名。如果SharedObjectRegister函數返回Success,則新線程創建成功。
然后,執行指定代碼。有兩種方法讓新線程執行指定的代碼:一種是在自定義類用戶對象的constructor事件中編寫腳本,新線程創建后就會自動執行該事件腳本;另一種方法是使用SharedObjectGet函數。該函數實現共享對象實例的引用,如:
SharedObjectGet ( “thread1” ,inv_thread ) 其中inv_thread是用來存儲共享對象實例的一個對象變量,要求與ccuo_thread具有同一個類名。
最后,通過使用Post語句,即以inv_thread.Post of_function(agrs)的形式,異步調用共享對象的函數of_function。
在完成任務后,可以用SharedObjectUnregister函數中止線程,也可用SharedObjectDirectory函數列出所有有效的共享對象。
一、函數調用部分本文所用Win32 API函數原型為:
Function Ulong FindWindowA ( String lpClassName ,String lpWindowName ) Library “user32.dll”
Function Ulong GetTickCount ( ) Library “kernel32.dll”
Function Ulong GetDesktopWindow ( ) Library “user32.dll”
Function Boolean GetWindowRect ( Ulong hWnd ,ref stc_rect lpRect ) Library “user32.dll”
Function Boolean MoveWindow ( Ulong hWnd ,int X ,int Y ,int nWidth ,int nHeight ,Boolean bRepaint ) Library “user32.dll”
下面具體討論如何實現消息對話框的居中顯示:
//聲明對象變量
ccuo_thread lccuo_thread
//創建新線程
SharedObjectRegister (‘ccuo_thread’ ,‘thread_center’ )
//引用實例
SharedObjectGet (‘thread_center’ ,lccuo_thread )
//調用窗口居中函數
lccuo_thread.Post of_center (‘#32770’ ,‘Demostration’ ,2000 )
//創建消息對話框
MessageBox ( ‘Demostration’ ,‘Copyright(c) 2001 by Y.L.Sun’ )
//中止線程
SharedObjectunRegister ( ‘thread_center’ )
原文轉自:http://www.anti-gravitydesign.com