亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VB軟件設計中的幾個問題

2019-11-18 17:52:31
字體:
來源:轉載
供稿:網友
在軟件開發過程中,有一些看似很簡單的問題,卻很容易被一般的開發人員所忽略,這些“Bugs”的存在,影響我們軟件走向商品化。下面所列出的是筆者在使用VisualBasic開發軟件時,碰到了幾個這類問題,這里給出其解決方法,供大家探討交流。

  一、防止應用程序加載兩份

  當我們的應用程序在Windows下運行后,在操作過程中,有時會把它最小化隱藏起來,或者切換到程序管理器下進行其它操作,而后又想進入原來的應用程序,這時如果忘記了剛才啟動的應用程序,又去重新啟動該應用程序,在內存中就同時加載了兩份同樣的應用程序,這樣不但占用了內存空間,而且容易引起誤操作,造成數據的損失。為了避免這種情況發生,就需要程序能夠給出提示“已經加載過”或直接進入第一次被加載的應用程序中。對于這個問題,看起來比較難辦,其實我們只要對Windows管理應用程序的機理有所了解,就很容易解決。我們知道,對于每一個運行著的應用程序,Windows都分配給一個唯一的“句柄(Handle)”和一個模塊代碼(Module)。當同時運行兩份相同的程序時,兩份程序的模塊代碼都相同,因此,只要找到內存中兩個相同的模塊代碼,我們就知道有兩份程序在運行,從而可以控制它。Windows提供的兩個接口函數GetModuleHandle和GetModuleUsage可以完成此任務。具體方法如下,首先在一個新的模塊文件(*.Bas)中聲明API函數。

  DeclareFunctionGetModuleHandleLib"Kernel"(ByVallp
  AppCount=GetModuleUsage(hModule)‘獲得模塊代碼,即運行的應用程序數目。

  lfAppCount>1Then‘同一應用程序數大于1MsgBox"程序已經加載",64End‘結束當前啟動的應用程序ElscmainForm.Show‘mainForm是程序的主窗體EndlfExitSuberrMain:lfErr<>0ThenMsgBox"啟動程序時發生錯誤",64ExitSubEndlfEndSub該過程完成后,在VB3.0主菜單[options]下,選擇[Project]菜單項,設定[StartupFrom]項為Submain,即程序運行時,最先從Submain子程序開始。這樣保證上面的代碼一定被執行。Submain是VB3.0約定的子過程名,不能用其它的名字來代替。

  重新生成EXE文件,在程序管理器下,啟動該應用程序,然后把產生的窗體最小化,接著從程序管理器下再運行它,用戶將看到一個消息框,告訴用戶,應用程序已被加載過了,第二份程序終止執行。上面的程序僅用來防止加載二份程序,但還沒有做到當不能啟動第二份時,自動進入到第一份程序。要做到這一點,所涉及的程序較復雜,這里就不詳細介紹了。

  二、判斷Windows的安裝路徑

  在我們開發的軟件中,有時會直接調用Windows提供的小應用程序,如計算器、計事本等;或需要把一些特殊的文件放到Windows或SYSTEM的路徑下。通常,Windows都安裝在C:\WINDOWS目錄下,但用戶可以任意修改Windows的主目錄名,因此,在我們的軟件中,就需要判斷Windows的安裝路徑。

  對于這個問題,Windows提供了兩個API函數:

GetWindowsDirectory和GetSystemDirectory,可以返回Windows目錄和SYSTEM目錄的名稱。

  為此,編制一個通用函數GetWinDir,它返回Windows的安裝目錄名稱。類似,可以寫出GetSysDir,略。

  在*.BAS模塊文件中聲明API函數
  DeclareFunctionGetWindowsDirectoryLib"Kernel"(ByVal

  ifRight$(Windir$,1)<>“/”thenWindir$=Windir$ “/”‘加上反斜杠GetWinDir=Windir$EndlfEndFunction其中ALLTRIM是用來去掉字符串中空字符的函數FunctionALLTrim(FatStr$)AsString'thisFunctiondeleteSpacecharinstringofFatStr$
DimSlimStr$,I

  SlimStr$=FatStr$I=lnStr(SlimStr$,Chr$(0))‘空格的位置IfI

  ThenSlimStr$=Left$(SlimStr$,I-1)SlimStr$=LTrim$(RTrim$)(SlimStr$))

  AIITrim$=SlimStr$EndFunction

三在關掉窗體前提示保存數

  據一般說來,通常用5種方式可以關閉一個應用程序:

  1.用戶選擇了當前窗體ControlBox中的[關閉]命令2.激發程序中的結束命令代碼(如End,Unload)3.退出Windows4.在Windows的任務列表中關閉應用程序。

  2.多文檔操作時,關閉主MDI窗體,引起子MDI窗體關閉。在關閉一個應用程序前,我們要給用戶一個機會,提示“是否保存數據”,或者取消“關閉”的操作。在VB中,窗體的關閉引發的是Form_Unload事件,我們可以對該事件進行編程,來控制“關閉”操作。假設現已有一個過程FileSave用來保存文件,則可以這樣來編寫程序。

  SubForm_Unload(CancelAslnteger)selectcastMsagbox(“是否保存數據?”,3 32)

  ‘Yes,No,Cnacel三種選擇case6‘YESFileSave‘保存數據case2‘cancelCancel=TRUE‘取消關閉操作caseelse‘NO‘不保存,執行關閉操作EndselectEndSub上面代碼中的Cancel變量,是Form_unload事件本身的固有傳出變量,它給Windows控制過程傳遞消息,從而控制程序的走向。

  上面三個例子,只是軟件完善過程中的一些小問題,要使軟件穩定可靠,需要做大量細致認真的工作。有些問題,我們可以通過發掘VB本身的潛力,深入掌握一些過程的操作技巧來解決;而有些較復雜的問題,涉及到Windows底層方面的操作,采用Windows的API函數,可以很容易實現。當然這需要對Windows的函數和機理有一定的了解。隨著Windows編程水平的提高,我們會逐漸學會并喜歡利用API函數來輔助完成程序編碼。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产99在线|中文| 欧美黑人一区二区三区| 日韩中文字幕在线精品| 欧美日本啪啪无遮挡网站| 久久噜噜噜精品国产亚洲综合| 日韩www在线| 亚洲毛片在线观看.| 国产精品第10页| 色琪琪综合男人的天堂aⅴ视频| 亚洲综合在线播放| 国产亚洲激情在线| 亚洲奶大毛多的老太婆| 久久久久久久91| 97色在线视频| 久久天天躁狠狠躁夜夜躁| 国产精品久久久久久亚洲影视| 久久久电影免费观看完整版| 亚洲国产欧美在线成人app| 日韩激情视频在线播放| 欧美成人精品一区二区三区| 亚洲国产成人91精品| 久久99久久99精品免观看粉嫩| 欧美一区二区三区四区在线| 日韩国产高清污视频在线观看| 欧美最顶级丰满的aⅴ艳星| 欧美黄色免费网站| 日韩av网站大全| 国产成人精品一区| 国产精品久久婷婷六月丁香| 91爱视频在线| 欧美视频专区一二在线观看| 精品色蜜蜜精品视频在线观看| 亚洲人精选亚洲人成在线| 98视频在线噜噜噜国产| 亚洲精品98久久久久久中文字幕| 国产精品电影一区| 国产精品日韩一区| 国产不卡av在线免费观看| 伊人久久精品视频| 国产狼人综合免费视频| 在线精品播放av| 欧美电影免费观看大全| 欧美激情一区二区三区成人| 日韩免费看的电影电视剧大全| 中文字幕欧美日韩精品| 欧美在线观看网站| 日韩精品亚洲元码| 理论片在线不卡免费观看| 久久久日本电影| 狠狠色狠狠色综合日日小说| 国产精品对白刺激| 欧洲亚洲免费在线| 欧美日韩精品在线视频| 国产精品视频免费观看www| 国产日韩精品在线| 45www国产精品网站| 国产91在线播放九色快色| 自拍偷拍亚洲一区| 91嫩草在线视频| 欧美大片免费看| 久久全球大尺度高清视频| 亚洲精品一区二区在线| 91精品啪aⅴ在线观看国产| 欧美日韩一区二区免费在线观看| 免费av一区二区| 中文字幕亚洲激情| 精品国偷自产在线视频| 国产精品自拍偷拍视频| 亚洲成人动漫在线播放| 97国产在线视频| 亚洲黄页视频免费观看| 亚洲精品永久免费精品| 国产91精品网站| 亚洲韩国青草视频| 午夜美女久久久久爽久久| 亚洲影院色在线观看免费| 91精品国产成人| 伊人久久大香线蕉av一区二区| 欧美日韩国产精品专区| 在线观看国产成人av片| 日韩精品在线视频| 欧美性少妇18aaaa视频| 亚洲激情自拍图| 国产精品福利在线观看| 精品久久久香蕉免费精品视频| 97碰在线观看| 欧美福利视频在线观看| 欧美刺激性大交免费视频| 欧美精品videos| 成人夜晚看av| 日韩一区二区三区国产| 亚洲aⅴ男人的天堂在线观看| 成人久久久久久| 91精品在线一区| 日韩性xxxx爱| 日韩欧美成人免费视频| 欧美极品欧美精品欧美视频| 成人av在线网址| 91wwwcom在线观看| 92版电视剧仙鹤神针在线观看| 91精品视频观看| 欧美午夜www高清视频| 国内精品久久久久影院优| 亚洲免费电影一区| 亚洲国产精品人人爽夜夜爽| 国产精品极品尤物在线观看| 日韩av网址在线观看| 狠狠做深爱婷婷久久综合一区| 国产成人中文字幕| 亚洲精品影视在线观看| 欧美在线视频导航| 精品国产美女在线| 亚洲国产91精品在线观看| 日韩国产在线看| 欧美日韩中文字幕在线| 日韩美女免费观看| 欧美最近摘花xxxx摘花| 久久亚洲春色中文字幕| 国产精品高潮呻吟久久av黑人| 亚洲精品成人久久| 5566日本婷婷色中文字幕97| 欧美激情xxxx性bbbb| 91精品国产成人| 91精品中国老女人| 欧美野外wwwxxx| 亚洲成人精品在线| 久久久国产视频91| 欧美在线视频播放| 亚洲一区二区三区xxx视频| 国产精品一区二区性色av| 国产精品久久久久久久久久东京| 日韩免费观看高清| 国产97免费视| 国产精品91在线观看| 欧美日本精品在线| 精品无人国产偷自产在线| 日韩网站免费观看高清| 亚洲网站视频福利| 亚洲第一av网| 国产精品国产三级国产aⅴ9色| 日韩欧美亚洲一二三区| 亚洲jizzjizz日本少妇| 日韩精品亚洲精品| 国产精品热视频| 日韩成人xxxx| 午夜剧场成人观在线视频免费观看| 日本精品视频在线观看| 亚洲丝袜一区在线| 97国产在线观看| 亚洲国产古装精品网站| 国产精品91久久| 国产精品揄拍一区二区| 欧美另类在线播放| 亚洲精品小视频在线观看| 亚洲最新av网址| 欧美性猛交xxxx免费看| 亚洲精品国产精品自产a区红杏吧| 精品久久久久久久久久久久久久| 久久国产色av| 一区二区三区四区在线观看视频| 一区二区三欧美| 亚洲欧美另类中文字幕| 亚洲色图激情小说| 精品久久在线播放|