再論用VFP寫.exe獨立可執行文件的方法
關於如何編寫獨立可執行程序的問題,我之前發了一個帖子:https://bbs.bccn.net/thread-345967-1-1.html,現在給點補充。啓動程序的代碼例子如下:
程序代码:
CLEAR ALL CLEAR IF Application.StartMode == 0 SET DEFAULT TO (Application.ActiveProject.HomeDir) ENDIF SET PATH TO "Data" ADDITIVE SET PROCEDURE TO myForm ADDITIVE Main() CLEAR ALL RETURN PROCEDURE Main() LOCAL loMainForm loMainForm = CREATEOBJECT("C_MainForm") WITH loMainForm .Caption = "Test" .AutoCenter = .T. .Show ENDWITH READ EVENTS ENDPROC
這裏,Main()函數是程序的入口,之所以寫在函數中而不是在外部,是因爲我有點潔癖,對象變量loMainForm將會在Main()函數結束後自動釋放内存資源(因爲這是局部變量LOCAL),如果寫在外部,屬於全局變量,則需要主動釋放,即RELEASE這個變量。
在前面的準備工作(這個代碼的準備工作,後面將會詳細説明,很重要的),如清除殘存資源,設定各種路徑和初始化之後,啓動窗體loMainForm,關鍵之處是在Show出窗體之後,必須發出READ EVENTS指令,啓動所謂的“事務處理”過程——這是Windows程序的共同特徵,那是一個死循環,不斷地等待消息和處理消息的,寫過C/C++下Windows程序的人都知道必須寫兩個函數,而不是像控制臺那樣衹有一個,其中一個就是死循環函數。如果沒有這個循環,程序就會“一閃而過”。
這裏,如果你的窗體是模式窗體,即WindowType=1,那麽,是無需用READ EVENTS的!
啓動事務處理循環之後,必須在適當時候取消,用CLEAR EVENTS指令,這個指令的最佳位置是在窗體關閉并從内存中釋放的時候,那個事件是Destroy事件。
[ 本帖最后由 TonyDeng 于 2015-2-27 21:15 编辑 ]