第一篇:PB11.5+WEB客戶端編程技巧總結(jié)
PB11.5 WEB客戶端編程技巧總結(jié)
一、概述
用PB11.5把現(xiàn)有C/S程序轉(zhuǎn)換成WEB應(yīng)用程序后,保留了大部分C/S環(huán)境下的代碼,并且大部分都能執(zhí)行過(guò)去。但是在BS平臺(tái)下,原來(lái)的PB代碼從客戶端轉(zhuǎn)成了IIS上的服務(wù)代碼,原的“客戶端”就成了瀏覽器,轉(zhuǎn)換后的客戶端編程其實(shí)就是面向?yàn)g覽器的編程。
根據(jù)目前我對(duì)PB11.5所了解的情況,PB11在代碼方面可以使用條件編譯方式嵌入.NET代碼,其實(shí)我感覺(jué).net里能實(shí)現(xiàn)的內(nèi)容,用PB代碼也基本能實(shí)現(xiàn),.net里不能實(shí)現(xiàn)的,PB也可實(shí)現(xiàn)(如datawindow),但這些都屬于服務(wù)端的編程范疇,實(shí)際應(yīng)用中很少會(huì)碰到在PB里再嵌入.net代碼的,除非要寫(xiě)一些很特殊的代碼,所以,可以說(shuō),服務(wù)端方面僅用PB代碼就可以徹底解決。
但實(shí)際上,這種純PB代碼的程序一發(fā)布成WEB后,會(huì)存在不少問(wèn)題,在C/S環(huán)境下,要完成一個(gè)操作往往需要多個(gè)交互過(guò)程,如“打開(kāi)窗口、選擇行、輸入數(shù)據(jù)、返回、刷新頁(yè)面”這么一個(gè)過(guò)程,轉(zhuǎn)成B/S后,運(yùn)行是這樣的“打開(kāi)窗口(POSTBACK)、選擇行(POSTBACK)、輸入數(shù)據(jù)(回車后POSTBACK)、返回(POSTBACK)”,那么多的POSTBACK使得操作變得很笨重,就連簡(jiǎn)單的一個(gè)MESSAGEBOX,都要2次POSTBACK:“打開(kāi)消息窗(POSTBACK)、點(diǎn)確定(POSTBACK)”。因此,使用PB11開(kāi)發(fā)WEB程序?qū)⒁媾R一個(gè)很嚴(yán)峻的問(wèn)題:如何提高客戶端的性能,減少POSTBACK次數(shù)。
值得慶幸的是,PB11.5的WEB頁(yè)面使用了AJAX技術(shù),POSTBACK并不會(huì)產(chǎn)生整個(gè)頁(yè)面的提交,而是部分提交。另外,PB11.5還提供了不少客戶端的編程接口,可以通過(guò)這些編程接口進(jìn)一步優(yōu)化頁(yè)面。那么,有哪些地方可以運(yùn)用javascript和html代碼優(yōu)化頁(yè)面呢?
1、數(shù)據(jù)窗口對(duì)象appendedhtml屬性。
剛接觸PB11.5的WEB開(kāi)發(fā)的時(shí)候,一定會(huì)被他的那么多unsupport屬性所蒙蔽,原先在C/S下絢麗多彩的界面,轉(zhuǎn)成B/S后變得暗淡無(wú)光,因此也就失去了進(jìn)一步開(kāi)發(fā)的樂(lè)趣。其實(shí)不然,PB提供了appendedhtml的屬性后,使WEB界面編程變得更為靈活,一個(gè)小小的appendedhtml,可以將DHTML、javascript等所有頁(yè)面技術(shù)嵌入到里面去??梢詫?shí)現(xiàn)的效果如:透明、垂直居中、漸變、鼠標(biāo)移動(dòng)特效等等。
查看發(fā)布成WEB后的頁(yè)面代碼,會(huì)發(fā)現(xiàn),appendedhtml里的內(nèi)容是放在
2、數(shù)據(jù)窗口事件。此方法是在數(shù)據(jù)窗口對(duì)象初始化的時(shí)候?qū)懭雽?duì)應(yīng)的腳本,如: #IF DEFINED PBWEBFORM THEN dw_1.JavaScriptFile = ”uo_dw.js“ dw_1.OnClientItemChanged = ”MyItemChanged“ #END IF 另外,在發(fā)布成WEB的時(shí)候,必須嵌入已寫(xiě)好的javascript腳本,這些被腳本會(huì)在頁(yè)面的head區(qū)被包含進(jìn)去。
經(jīng)過(guò)上面代碼一處理,數(shù)據(jù)窗口的事件被觸發(fā)后就會(huì)直接跳到j(luò)avascript腳本去處理而不執(zhí)行回調(diào)(就是PB里寫(xiě)的程序不會(huì)被執(zhí)行)。
那么,哪些事件支持腳本編程呢?根據(jù)PB11.5文檔所提供的技術(shù)說(shuō)明,目前僅限于數(shù)據(jù)窗口內(nèi)事件處理,包括clicked、DoubleClicked、RButtonDown、ButtonClicked、ButtonClicking、ItemFocusChanged、ItemError、ItemChanged、RowFocusChanged。在指定客戶端事件腳本的時(shí)候,事件前都必須加”O(jiān)nClient”。
二、客戶端程序的優(yōu)化思路
借助javascript腳本技術(shù),我們可以對(duì)目前程序上的幾個(gè)操作瓶頸進(jìn)行優(yōu)化。
1、數(shù)據(jù)窗口的條件性POSTBACK。
如果不對(duì)datawindow進(jìn)行腳本處理,那么如果事件內(nèi)有代碼,則將會(huì)在觸發(fā)該事件的時(shí)候執(zhí)行POSTBACK,這樣會(huì)有很多沒(méi)必要的POSTBACK。如,在itemchanged事件里寫(xiě)入了對(duì)身份證輸入后進(jìn)行檢查的代碼,在IE下運(yùn)行的情況是,該數(shù)據(jù)窗口的任何列輸入完后都會(huì)執(zhí)行POSTBACK,有沒(méi)有辦法實(shí)現(xiàn)只輸入身份證的時(shí)候才POSTBACK呢?可以通過(guò)以下方法:
(1)在窗口的open事件里寫(xiě)入腳本。#IF DEFINED PBWEBFORM THEN dw_1.JavaScriptFile = ”uo_dw.js“ dw_1.OnClientItemChanged = ”MyItemChanged“ #END IF(2)腳本里寫(xiě)入條件回調(diào)程序。
function MyItemChanged(sender, rowNumber, columnName,newValue){if(columnName== ‘sfz’){return PBDataWindow_ItemChangedReject(sender, rowNumber, columnName, newValue);} Else {//do nothing} } 其中,PBDataWindow_ItemChangedReject為調(diào)用數(shù)據(jù)窗口的itemchanged事件,數(shù)據(jù)窗口提供的回調(diào)函數(shù),可以在PBDataWindow.js找到,查閱PB幫助文檔可以查看其具體用法。
2、PB代碼向javascript腳本轉(zhuǎn)化。
首先,必須理解PB-WEB程序的運(yùn)行模式,見(jiàn)下圖: 數(shù)據(jù)庫(kù) SQL 數(shù)據(jù)集 EASERVER 代理對(duì)象 IIS PBVM request IE 代理對(duì)象 response 從上圖可以看出,IE與數(shù)據(jù)庫(kù)之間其實(shí)就是數(shù)據(jù)請(qǐng)求的關(guān)系,我們可以認(rèn)為,除了需要從服務(wù)端下載數(shù)據(jù)和頁(yè)面加載的請(qǐng)求外,其他都是沒(méi)必要的請(qǐng)求。這些沒(méi)必要的請(qǐng)求包括:
1)messagebox。消息提示可以說(shuō)是UI界面交互的最重要的環(huán)節(jié)之一,幾乎所有業(yè)務(wù)操作都會(huì)涉及,很遺憾的是,除了數(shù)據(jù)窗口事件里的javascript支持本地消息提示外,目前還沒(méi)有一種辦法可以脫離IIS,直接在PB代碼里調(diào)用IE消息提示的方法。2)簡(jiǎn)單的數(shù)據(jù)檢查。如登錄時(shí)的驗(yàn)證碼、輸入格式校驗(yàn)、身份證合法性檢查等,可以直接在javascript里處理。
3)輔助性的數(shù)據(jù)輸入。包括下拉數(shù)據(jù)窗口、下拉日歷等。在傳統(tǒng)的C/S模式下,直接打開(kāi)一個(gè)窗口就可以實(shí)現(xiàn)下拉數(shù)據(jù)選擇功能,但是這種方法在WEB下已經(jīng)行不通,頻繁的POSTBACK會(huì)使操作變得笨重、緩慢,甚至比直接輸入來(lái)的慢。但是有些下拉的數(shù)據(jù)又需要從服務(wù)端取,這樣可以將下拉窗口設(shè)計(jì)成共用模塊啟動(dòng)時(shí)直接裝載到頁(yè)面,在需要調(diào)用的地方用javascript代碼顯示出來(lái),然后象服務(wù)端請(qǐng)求數(shù)據(jù),選擇數(shù)據(jù)后返回、設(shè)置數(shù)據(jù)、隱藏下拉窗口,這一過(guò)程只要一個(gè)POSTBACK,即數(shù)據(jù)請(qǐng)求過(guò)程。
4)頁(yè)面切換。在IE下打開(kāi)多個(gè)業(yè)務(wù)窗口,這些窗口都已經(jīng)裝載到了IE下,可以通過(guò)javascript腳本實(shí)現(xiàn)頁(yè)面顯示、隱藏,以提高響應(yīng)速度。
5)窗口、對(duì)象的關(guān)閉、銷毀。類似此操作,可以直接在IE下完成,無(wú)需要再送到IIS上處理。
6)實(shí)現(xiàn)回車后焦點(diǎn)切換。打開(kāi)PB安裝文件所在路徑,打開(kāi)F:Program FilesSybasePowerBuilder 11.5DotNETwebrootscripts目錄下的dwcommon.js,并修改其代碼段。函數(shù)為:HTDW_inputKeyDown()代碼if(event.keyCode == 9 &&!event.ctrlKey &&!event.altKey &&!event.shiftKey)ProcessTab(obj);修改為if((event.keyCode == 9 || event.keyCode == 13)&&!event.ctrlKey &&!event.altKey &&!event.shiftKey)ProcessTab(obj);實(shí)現(xiàn)按回車鍵的tab效果。
三、PB與javascript混合編程技巧
1、使用PB提供的javascript函數(shù)
打開(kāi)IIS目錄,在發(fā)布好的站點(diǎn)文件夾下,有個(gè)scripts文件夾,存放的是所有PB的內(nèi)置函數(shù),這些函數(shù)描述了客戶端的調(diào)用、回調(diào)方法,具體使用方法在PB文檔里有做了描述。
數(shù)據(jù)窗口對(duì)象(大部分?jǐn)?shù)據(jù)窗口函數(shù)接口里都用sender做為參數(shù))可以引用的函數(shù)可以在dwcommon.js里的function HTDW_DataWindowClass(name)里找到,如下圖:
如:this.SetItem = HTDW_SetItem;這行表示,可以調(diào)用數(shù)據(jù)窗口的SetItem()函數(shù)進(jìn)行設(shè)置數(shù)據(jù)窗口值,至于SetItem參數(shù),可以查找HTDW_SetItem函數(shù)的參數(shù)結(jié)構(gòu)。如下圖:
調(diào)用舉例:
數(shù)據(jù)窗口的回調(diào)函數(shù),可以在PBDataWindow.js里找到,上面已經(jīng)舉過(guò)例子,這里不做描述了。
2、靈活地操控WEB元素
WEB頁(yè)面上,每個(gè)元素都有一個(gè)ID值,是唯一標(biāo)識(shí)該元素的鍵值。如表示“確定”按鈕的ID為ID_OK。
要在javascript里編寫(xiě)程序?qū)崿F(xiàn)與頁(yè)面元素交互,最重要的一點(diǎn)是要弄清楚從PB轉(zhuǎn)換成頁(yè)面后的元素的ID值,這些ID值是IIS發(fā)送過(guò)來(lái)的,與PB里的對(duì)象名有一定的對(duì)應(yīng)關(guān)系。目前PB技術(shù)文檔沒(méi)有這方面的說(shuō)明,但我們可以通過(guò)多種途徑來(lái)獲得這些元素ID。1)利用event對(duì)象獲得窗口事件的源、父對(duì)象
如,可以定義var o = window.event.srcElement;獲取鼠標(biāo)在窗口上點(diǎn)擊的對(duì)象,通過(guò)o.parentElement可以獲取該對(duì)象的父對(duì)象。
2)通過(guò)getElementByName、getElementById、getElementsByTagName等方法獲取對(duì)象ID。
3)通過(guò)alert消息提示將對(duì)象ID顯示出來(lái)。
有了這些ID,接下去如何操控界面元素,就和C/S編程差不多了,有關(guān)函數(shù)操作、屬性操作等可以參考javascript和DHTML相關(guān)資料。
應(yīng)用舉例:
第二篇:網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(客戶端開(kāi)發(fā)編程)
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(14)
3/26/2013 SQL Server客戶端開(kāi)發(fā)與編程
一、引言
1.編程模式:C/S模式和B/S模式。
2.客戶端編程語(yǔ)言:ASP,VB,VC,VFP,PB,Delphi,Access,ASP,JSP等,都可訪問(wèn)SQL數(shù)據(jù)庫(kù)。3.可訪問(wèn)多種數(shù)據(jù)庫(kù)。
二、數(shù)據(jù)庫(kù)編程接口
1.ODBC ODBC(Open Database Connectivity,開(kāi)放數(shù)據(jù)庫(kù)互連)是微軟公司開(kāi)放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。
ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句送給ODBC。一個(gè)基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫(kù)的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫(kù)操作由ODBC驅(qū)動(dòng)程序完成。也就是說(shuō),不論是FoxPro、Access , MYSQL還是Oracle數(shù)據(jù)庫(kù),均可用ODBC API進(jìn)行訪問(wèn)。由此可見(jiàn),ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫(kù)。
2.OLE DB OLE DB(Object Linking and Embedding,對(duì)象連接與嵌入),簡(jiǎn)稱OLE技術(shù);DB(data base)。
OLE DB(OLEDB)是微軟的戰(zhàn)略性的通向不同的數(shù)據(jù)源的低級(jí)應(yīng)用程序接口。OLE DB不僅包括ODBC的結(jié)構(gòu)化查詢語(yǔ)言(SQL)能力,還具有面向其他非SQL數(shù)據(jù)類型的通路。作為微軟的組件對(duì)象模型(COM)的一種設(shè)計(jì),OLE DB是一組讀寫(xiě)數(shù)據(jù)的方法。
3.ADO ADO(ActiveX Data Objects)是微軟公司的一個(gè)用于存取數(shù)據(jù)源的COM組件。它提供了編程語(yǔ)言和統(tǒng)一數(shù)據(jù)訪問(wèn)方式OLE DB的一個(gè)橋梁。允許開(kāi)發(fā)人員編寫(xiě)訪問(wèn)數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫(kù)是如何實(shí)現(xiàn)的,而只用關(guān)心到數(shù)據(jù)庫(kù)的連接。
ADO是一種面向?qū)ο蟮木幊探涌?,是一個(gè)能夠訪問(wèn)不同數(shù)據(jù)庫(kù)的統(tǒng)一接口,它在OLE DB中提供了一種“橋”程序,這種程序能夠提供對(duì)數(shù)據(jù)庫(kù)的連接。開(kāi)發(fā)人員在使用ADO時(shí),其實(shí)就是在使用OLE DB,不過(guò)OLE DB更加接近底層。
4.三種接口之間的關(guān)系
ODBC是Microsoft引進(jìn)的一種早期數(shù)據(jù)庫(kù)接口技術(shù)。它實(shí)際上是ADO的前身。早期的數(shù)據(jù)庫(kù)連接是非常困難的,每個(gè)數(shù)據(jù)庫(kù)的格式都不一樣,開(kāi)發(fā)者得對(duì)他們所開(kāi)發(fā)的每種數(shù)據(jù)庫(kù)的底層API有深刻的了解,因此,能處理各種各樣數(shù)據(jù)庫(kù)的通用的API就應(yīng)運(yùn)而生了,也就是現(xiàn)在的ODBC(Open Database Connectivity)。ODBC是人們?cè)趧?chuàng)建通用API的早期產(chǎn)物,有許多種數(shù)據(jù)庫(kù)遵從了這種標(biāo)準(zhǔn),被稱為ODBC兼容的數(shù)據(jù)庫(kù)。
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(14)
3/26/2013 OLEDB位于ODBC層與應(yīng)用程序之間。在一些應(yīng)用中,例如ASP、Delphi,ADO是位于OLEDB之上的“應(yīng)用程序”。ADO調(diào)用先被送到OLEDB,然后再交由ODBC處理。
三、常用ADO對(duì)象方法和屬性
1.Connection對(duì)象
P214, P220 2.Command對(duì)象
P214, P227 3.Recordset對(duì)象
P215, P220
四、用其它語(yǔ)言訪問(wèn)SQL數(shù)據(jù)庫(kù)
ASP,VB,VC,VFP,PB,Delphi,Access,ASP,JSP等,都可訪問(wèn)SQL數(shù)據(jù)庫(kù)。
以下僅介紹ASP、VFP、Delphi。五.ASP訪問(wèn)SQL數(shù)據(jù)庫(kù)
1.常用ASP內(nèi)建對(duì)象 Request Response Application Session Server 2.建立訪問(wèn)環(huán)境
可使用OLE DB或ODBC。
(1)建立使用OLE DB的訪問(wèn)環(huán)境
需要在“程序/管理工具/Internet服務(wù)器管理”中,右擊“默認(rèn)Web站點(diǎn)”,再單擊“屬性”,然后設(shè)置“主目錄”和“文檔”。(如P218圖6.8)(2)建立使用ODBC數(shù)據(jù)源的環(huán)境
需要在“程序/管理工具/數(shù)據(jù)源(ODBC)”中配置,在DNS配置框中選“使用用戶輸入登錄ID和密碼的SQL Server驗(yàn)證”。P213 3.連接到數(shù)據(jù)源 P214 在ASP中引用ADO對(duì)象,要加前綴ADODB。(1)創(chuàng)建一個(gè)ADO Connection對(duì)象。例如:
Set cn=Server.CreateObject(“ADODB.Connection”)(2)連接到數(shù)據(jù)源
①使用OLE DB接口
首先指定OLD DB提供者 例:
cn.Provider=”sqloledb” 再連接到數(shù)據(jù)源 例:
cn.Open “Server=zyxy;Database=教學(xué)管理;uid=sa;pwd=??”
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(14)
3/26/2013 ②使用ODBC數(shù)據(jù)源 例:
cn.Open “dsn=jxgl;uid=sa;pwd=??”
?jxgl是2(2)中建立的數(shù)據(jù)源
4.執(zhí)行訪問(wèn)數(shù)據(jù)源的命令并創(chuàng)建結(jié)果集對(duì)象
例:
set rs=cn.Execute(“select * from 學(xué)生 where 性別=?男?”)5.關(guān)閉連接
例: rs.close cn.close 6.應(yīng)用舉例
例6.1
P221 用cn.Excute創(chuàng)建的Recordset對(duì)象,在結(jié)果集中只能用MoveNext逐步向尾部單方向移動(dòng)記錄指針。還有另一種方法創(chuàng)建Recordset對(duì)象:P222L18。用此種方法創(chuàng)建的Recordset對(duì)象的Open方法有四個(gè)參數(shù)。
六、在客戶端用VFP訪問(wèn)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)SQL Server上的數(shù)據(jù)庫(kù)(一)在客戶端設(shè)置ODBC: 在本地機(jī)上:
開(kāi)始/設(shè)置/控制面板/管理工具/數(shù)據(jù)源(ODBC)在此添加數(shù)據(jù)源,命名數(shù)據(jù)源名(假定命名為jxgl),填寫(xiě)服務(wù)器名,使用SQL Server驗(yàn)證,更改默認(rèn)的數(shù)據(jù)庫(kù)。
附:可繼續(xù)完成以下設(shè)置: 在客戶端VFP環(huán)境下打開(kāi)項(xiàng)目管理器(項(xiàng)目中至少應(yīng)有一個(gè)數(shù)據(jù)庫(kù)),展開(kāi)數(shù)據(jù)庫(kù),選擇連接,單擊新建按鈕,打開(kāi)連接設(shè)計(jì)器對(duì)話框,填寫(xiě)有關(guān)內(nèi)容(也可以打開(kāi)一個(gè)數(shù)據(jù)庫(kù),用create connection命令打開(kāi)連接設(shè)計(jì)器對(duì)話框),最后在保存對(duì)話框輸入連接名(假定為L(zhǎng)J)。該連接還可使用以下命令建立:
CREATE CONNECTION <連接名> DATASOURCE <數(shù)據(jù)源名> USERID
DATABASE “教學(xué)管理”
(二)在客戶端VFP中使用SPT(SQL Pass Through)技術(shù)
1.連接數(shù)據(jù)源
<連接句柄變量名>=SQLConnect(<數(shù)據(jù)源名>,
dh=SQLCONNECT(“LJ”,”sa”,””)也可使用
<連接句柄變量名>=SQLStringConnect(“dsn=<數(shù)據(jù)源名>;uid=
pwd=<帳戶密碼>”)例如
dh=SQLStringConnect(“dsn=LJ;uid=sa;pwd=”)如果連接成功,dh返回正整數(shù)句柄,失敗返回-1。
附:也可以使用命令 <連接句柄變量名>=SQLConnect(<連接名>)例:DH=SQLConnect(“LJ”)2.執(zhí)行SQL命令
SQLEXEC(<連接句柄變量名>,
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(14)
3/26/2013 在查詢命令中添加READWRITE關(guān)鍵詞,可得到可讀寫(xiě)的臨時(shí)表。可用SQLCOMMIT(DH)、SQLROLLBACK(DH)提交或回滾事務(wù)。3.斷開(kāi)連接
SQLDISCONNECT(DH)
七、Delphi訪問(wèn)SQL數(shù)據(jù)庫(kù)
1.ADO控件
P304 2.使用TADODataSet訪問(wèn)SQL數(shù)據(jù)庫(kù)
第三篇:個(gè)人總結(jié)的VC編程技巧(范文模版)
1.等于號(hào)=表示賦值操作;= =表示邏輯操作。在使用if或(a= =b)時(shí)候需要注意。2.浮點(diǎn)型數(shù)據(jù)判斷相等使用fabs(a-b)<0.00001f 3.數(shù)組使用SetSize(nSize)之前需要清空RemoveAll()4.修改資源編譯后exe不執(zhí)行處理方法:選中資源,將其Property屬性對(duì)話框中,修改其File Name屬性,改名,保存后會(huì)生成其他文件名
5.對(duì)于繪制文字TextOut(),在SetMapMode(MM_LOMETRIC)后,需要重新選擇字體,否則打印預(yù)覽時(shí)候會(huì)出現(xiàn)字體亂碼現(xiàn)象。
6.賦值型條件語(yǔ)句需要加括號(hào),否則先執(zhí)行運(yùn)算符,再執(zhí)行條件語(yǔ)句,如int a=b+c>0 ? 1 :-1,時(shí),將先執(zhí)行(b+c)。
MFC的消息處理函數(shù)
1.AfxWndProc()該函數(shù)負(fù)責(zé)接收消息,找到消息所屬的CWnd對(duì)象,然后調(diào)用AfxCallWndProc
2.AfxCallWndProc()該函數(shù)負(fù)責(zé)保存消息(保存的內(nèi)容主要是消息標(biāo)識(shí)符和消息參數(shù))供應(yīng)用程序以后使用,然后調(diào)用WindowProc()函數(shù)
3.WindowProc()該函數(shù)負(fù)責(zé)發(fā)送消息到OnWndMsg()函數(shù),如果未被處理,則調(diào)用DefWindowProc()函數(shù)
4.OnWndMsg()該函數(shù)的功能首先按字節(jié)對(duì)消息進(jìn)行排序,對(duì)于WM_COMMAND消息,調(diào)用OnCommand()消息響應(yīng)函數(shù),對(duì)于WM_NOTIFY消息調(diào)用OnNotify()消息響應(yīng)函數(shù)。任何被遺漏的消息將是一個(gè)窗口消息。OnWndMsg()函數(shù)搜索類的消息映像,以找到一個(gè)能處理任何窗口消息的處理函數(shù)。如果OnWndMsg()函數(shù)不能找到這樣的處理函數(shù)的話,則把消息返回到WindowProc()函數(shù),由它將消息發(fā)送給DefWindowProc()函數(shù)
5.OnCommand()該函數(shù)查看這是不是一個(gè)控件通知(lParam參數(shù)不為NULL,如果lParam參數(shù)為空的話,說(shuō)明該消息不是控件通知),如果它是,OnCommand()函數(shù)會(huì)試圖將消息映射到制造通知的控件;如果他不是一個(gè)控件通知(或者如果控件拒絕映射的消息)OnCommand()就會(huì)調(diào)用OnCmdMsg()函數(shù)
6.OnCmdMsg()根據(jù)接收消息的類,OnCmdMsg()函數(shù)將在一個(gè)稱為命令傳遞(Command Routing)的過(guò)程中潛在的傳遞命令消息和控件通知。例如:如果擁有該窗口的類是一個(gè)框架類,則命令和通知消息也被傳遞到視圖和文檔類,并為該類尋找一個(gè)消息處理函數(shù)
MFC應(yīng)用程序創(chuàng)建窗口的過(guò)程
1.PreCreateWindow()該函數(shù)是一個(gè)重載函數(shù),在窗口被創(chuàng)建前,可以在該重載函數(shù)中改變創(chuàng)建參數(shù)(可以設(shè)置窗口風(fēng)格等等)
2.PreSubclassWindow()這也是一個(gè)重載函數(shù),允許首先子分類一個(gè)窗口
3.OnGetMinMaxInfo()該函數(shù)為消息響應(yīng)函數(shù),響應(yīng)的是WM_GETMINMAXINFO消息,允許設(shè)置窗口的最大或者最小尺寸
4.OnNcCreate()該函數(shù)也是一個(gè)消息響應(yīng)函數(shù),響應(yīng)WM_NCCREATE消息,發(fā)送消息以告訴窗口的客戶區(qū)即將被創(chuàng)建
5.OnNcCalcSize()該函數(shù)也是消息響應(yīng)函數(shù),響應(yīng)WM_NCCALCSIZE消息,作用是允許改變窗口客戶區(qū)大小
6.OnCreate()該函數(shù)也是一個(gè)消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送消息告訴一個(gè)窗口已經(jīng)被創(chuàng)建
7.OnSize()該函數(shù)也是一個(gè)消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送該消息以告訴該窗口大小已經(jīng)發(fā)生變化
8.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息說(shuō)明窗口在移動(dòng)
9.OnChildNotify()該函數(shù)為重載函數(shù),作為部分消息映射被調(diào)用,告訴父窗口即將被告知一個(gè)窗口剛剛被創(chuàng)建
MFC應(yīng)用程序關(guān)閉窗口的順序(非模態(tài)窗口)
1.OnClose()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_CLOSE消息,當(dāng)關(guān)閉按鈕被單擊的時(shí)候發(fā)送此消息
2.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_DESTROY消息,當(dāng)一個(gè)窗口將被銷毀時(shí),發(fā)送此消息
3.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_NCDESTROY消息,當(dāng)一個(gè)窗口被銷毀后發(fā)送此消息
4.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動(dòng)作,被CWnd調(diào)用
MFC應(yīng)用程序中打開(kāi)模式對(duì)話框的函數(shù)調(diào)用順序
1.DoModal()重載函數(shù),重載DoModal()成員函數(shù) 2.PreSubclassWindow()重載函數(shù),允許首先子分類一個(gè)窗口
3.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個(gè)窗口已經(jīng)被創(chuàng)建
4.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化
5.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息,以告訴窗口正在移動(dòng)
6.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息,以允許改變對(duì)話框中控件的字體
7.OnInitDialog()消息響應(yīng)函數(shù),響應(yīng)WM_INITDIALOG消息,發(fā)送此消息以允許初始化對(duì)話框中的控件,或者是創(chuàng)建新控件
8.OnShowWindow()消息響應(yīng)函數(shù),響應(yīng)WM_SHOWWINDOW消息,該函數(shù)被ShowWindow()函數(shù)調(diào)用
9.OnCtlColor()消息響應(yīng)函數(shù),響應(yīng)WM_CTLCOLOR消息,被父窗口發(fā)送已改變對(duì)話框或?qū)υ捒蛏厦婵丶念伾?/p>
10.OnChildNotify()重載函數(shù),作為WM_CTLCOLOR消息的結(jié)果發(fā)送
MFC應(yīng)用程序中關(guān)閉模式對(duì)話框的順序
1.OnClose()消息響應(yīng)函數(shù),響應(yīng)WM_CLOSE消息,當(dāng)“關(guān)閉”按鈕被單擊的時(shí)候,該函數(shù)被調(diào)用
2.OnKillFocus()消息響應(yīng)函數(shù),響應(yīng)WM_KILLFOCUS消息,當(dāng)一個(gè)窗口即將失去鍵盤輸入焦點(diǎn)以前被發(fā)送
3.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_DESTROY消息,當(dāng)一個(gè)窗口即將被銷毀時(shí),被發(fā)送
4.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_NCDESTROY消息,當(dāng)一個(gè)窗口被銷毀以后被發(fā)送
5.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動(dòng)作被CWnd調(diào)用
打開(kāi)無(wú)模式對(duì)話框的順序
1.PreSubclassWindow()重載函數(shù),允許用戶首先子分類一個(gè)窗口 2.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個(gè)窗口已經(jīng)被創(chuàng)建
3.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化
4.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息以告訴窗口正在移動(dòng)
5.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息以允許改變對(duì)話框中控件的字體
以上這些的執(zhí)行都是按給定的順序執(zhí)行!
只有清楚的了解應(yīng)用程序的執(zhí)行順序,才能在編寫(xiě)代碼的時(shí)候知道,在什么時(shí)候應(yīng)該執(zhí)行什么,以及在什么地方該處理什么!
這只是本人總結(jié)的一點(diǎn)小小的經(jīng)驗(yàn),希望能對(duì)MFC的初學(xué)者有所幫助!MFC應(yīng)用程序中處理消息的順序
1.AfxWndProc()該函數(shù)負(fù)責(zé)接收消息,找到消息所屬的CWnd對(duì)象,然后調(diào)用AfxCallWndProc
2.AfxCallWndProc()該函數(shù)負(fù)責(zé)保存消息(保存的內(nèi)容主要是消息標(biāo)識(shí)符和消息參數(shù))供應(yīng)用程序以后使用,然后調(diào)用WindowProc()函數(shù)
3.WindowProc()該函數(shù)負(fù)責(zé)發(fā)送消息到OnWndMsg()函數(shù),如果未被處理,則調(diào)用DefWindowProc()函數(shù)
4.OnWndMsg()該函數(shù)的功能首先按字節(jié)對(duì)消息進(jìn)行排序,對(duì)于WM_COMMAND消息,調(diào)用OnCommand()消息響應(yīng)函數(shù),對(duì)于WM_NOTIFY消息調(diào)用OnNotify()消息響應(yīng)函數(shù)。任何被遺漏的消息將是一個(gè)窗口消息。OnWndMsg()函數(shù)搜索類的消息映像,以找到一個(gè)能處理任何窗口消息的處理函數(shù)。如果OnWndMsg()函數(shù)不能找到這樣的處理函數(shù)的話,則把消息返回到WindowProc()函數(shù),由它將消息發(fā)送給DefWindowProc()函數(shù)
5.OnCommand()該函數(shù)查看這是不是一個(gè)控件通知(lParam參數(shù)不為NULL,如果lParam參數(shù)為空的話,說(shuō)明該消息不是控件通知),如果它是,OnCommand()函數(shù)會(huì)試圖將消息映射到制造通知的控件;如果他不是一個(gè)控件通知(或者如果控件拒絕映射的消息)OnCommand()就會(huì)調(diào)用OnCmdMsg()函數(shù)
6.OnCmdMsg()根據(jù)接收消息的類,OnCmdMsg()函數(shù)將在一個(gè)稱為命令傳遞(Command Routing)的過(guò)程中潛在的傳遞命令消息和控件通知。例如:如果擁有該窗口的類是一個(gè)框架類,則命令和通知消息也被傳遞到視圖和文檔類,并為該類尋找一個(gè)消息處理函數(shù)
MFC應(yīng)用程序創(chuàng)建窗口的過(guò)程
1.PreCreateWindow()該函數(shù)是一個(gè)重載函數(shù),在窗口被創(chuàng)建前,可以在該重載函數(shù)中改變創(chuàng)建參數(shù)(可以設(shè)置窗口風(fēng)格等等)
2.PreSubclassWindow()這也是一個(gè)重載函數(shù),允許首先子分類一個(gè)窗口
3.OnGetMinMaxInfo()該函數(shù)為消息響應(yīng)函數(shù),響應(yīng)的是WM_GETMINMAXINFO消息,允許設(shè)置窗口的最大或者最小尺寸
4.OnNcCreate()該函數(shù)也是一個(gè)消息響應(yīng)函數(shù),響應(yīng)WM_NCCREATE消息,發(fā)送消息以告訴窗口的客戶區(qū)即將被創(chuàng)建
5.OnNcCalcSize()該函數(shù)也是消息響應(yīng)函數(shù),響應(yīng)WM_NCCALCSIZE消息,作用是允許改變窗口客戶區(qū)大小
6.OnCreate()該函數(shù)也是一個(gè)消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送消息告訴一個(gè)窗口已經(jīng)被創(chuàng)建
7.OnSize()該函數(shù)也是一個(gè)消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送該消息以告訴該窗口大小已經(jīng)發(fā)生變化
8.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息說(shuō)明窗口在移動(dòng)
9.OnChildNotify()該函數(shù)為重載函數(shù),作為部分消息映射被調(diào)用,告訴父窗口即將被告知一個(gè)窗口剛剛被創(chuàng)建
MFC應(yīng)用程序關(guān)閉窗口的順序(非模態(tài)窗口)
1.OnClose()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_CLOSE消息,當(dāng)關(guān)閉按鈕被單擊的時(shí)候發(fā)送此消息
2.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_DESTROY消息,當(dāng)一個(gè)窗口將被銷毀時(shí),發(fā)送此消息
3.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)窗口的WM_NCDESTROY消息,當(dāng)一個(gè)窗口被銷毀后發(fā)送此消息
4.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動(dòng)作,被CWnd調(diào)用
MFC應(yīng)用程序中打開(kāi)模式對(duì)話框的函數(shù)調(diào)用順序
1.DoModal()重載函數(shù),重載DoModal()成員函數(shù) 2.PreSubclassWindow()重載函數(shù),允許首先子分類一個(gè)窗口
3.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個(gè)窗口已經(jīng)被創(chuàng)建
4.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化
5.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息,以告訴窗口正在移動(dòng)
6.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息,以允許改變對(duì)話框中控件的字體
7.OnInitDialog()消息響應(yīng)函數(shù),響應(yīng)WM_INITDIALOG消息,發(fā)送此消息以允許初始化對(duì)話框中的控件,或者是創(chuàng)建新控件
8.OnShowWindow()消息響應(yīng)函數(shù),響應(yīng)WM_SHOWWINDOW消息,該函數(shù)被ShowWindow()函數(shù)調(diào)用
9.OnCtlColor()消息響應(yīng)函數(shù),響應(yīng)WM_CTLCOLOR消息,被父窗口發(fā)送已改變對(duì)話框或?qū)υ捒蛏厦婵丶念伾?/p>
10.OnChildNotify()重載函數(shù),作為WM_CTLCOLOR消息的結(jié)果發(fā)送
MFC應(yīng)用程序中關(guān)閉模式對(duì)話框的順序
1.OnClose()消息響應(yīng)函數(shù),響應(yīng)WM_CLOSE消息,當(dāng)“關(guān)閉”按鈕被單擊的時(shí)候,該函數(shù)被調(diào)用
2.OnKillFocus()消息響應(yīng)函數(shù),響應(yīng)WM_KILLFOCUS消息,當(dāng)一個(gè)窗口即將失去鍵盤輸入焦點(diǎn)以前被發(fā)送 3.OnDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_DESTROY消息,當(dāng)一個(gè)窗口即將被銷毀時(shí),被發(fā)送
4.OnNcDestroy()消息響應(yīng)函數(shù),響應(yīng)WM_NCDESTROY消息,當(dāng)一個(gè)窗口被銷毀以后被發(fā)送
5.PostNcDestroy()重載函數(shù),作為處理OnNcDestroy()函數(shù)的最后動(dòng)作被CWnd調(diào)用
打開(kāi)無(wú)模式對(duì)話框的順序
1.PreSubclassWindow()重載函數(shù),允許用戶首先子分類一個(gè)窗口
2.OnCreate()消息響應(yīng)函數(shù),響應(yīng)WM_CREATE消息,發(fā)送此消息以告訴一個(gè)窗口已經(jīng)被創(chuàng)建
3.OnSize()消息響應(yīng)函數(shù),響應(yīng)WM_SIZE消息,發(fā)送此消息以告訴窗口大小發(fā)生變化
4.OnMove()消息響應(yīng)函數(shù),響應(yīng)WM_MOVE消息,發(fā)送此消息以告訴窗口正在移動(dòng)
5.OnSetFont()消息響應(yīng)函數(shù),響應(yīng)WM_SETFONT消息,發(fā)送此消息以允許改變對(duì)話框中控件的字體
MFC的一些主要成員函數(shù)
CWinThread::m_pMainWnd:保存指向應(yīng)用程序的主窗口指針。CWinThread::GetMainWnd:查詢指向線程主窗口的指針。CWinThread::InitInstance:重載以實(shí)現(xiàn)線程實(shí)例的初始化。AfxGetApp:獲得指向CWinApp對(duì)象的指針。
AfxGetInstanceHandle:獲得當(dāng)前應(yīng)用程序?qū)嵗木浔?。AfxGetResourceHandle:獲得應(yīng)用程序資源的句柄。
AfxGetAppName:獲得一個(gè)字符串指針,其中包含了應(yīng)用程序的名字。另外,如果你擁有一個(gè)指向CWinApp對(duì)象的指針,可以通過(guò)m_pszExename來(lái)獲得應(yīng)用程序的名字。
CDocument::IsModified:標(biāo)識(shí)文檔從最近一次保存以來(lái)是否被修改過(guò)。CDocument::UpdateAllViews:通知所有視圖文檔已被修改的消息。CWnd::m_hWnd:指明與這個(gè)CWnd對(duì)象相關(guān)聯(lián)的HWND句柄。CWnd::Create:創(chuàng)建并初始化與CWnd對(duì)象相關(guān)聯(lián)的子窗口。
CWnd::PreCreateWindow:在與CWnd對(duì)象相關(guān)聯(lián)的窗口被創(chuàng)建之前調(diào)用。CWnd::IsWindowEnabled:確定一個(gè)窗口是否允許鼠標(biāo)和鍵盤輸入。CWnd::EnableWindow:允許或禁止鼠標(biāo)和鍵盤輸入。CWnd::SetWindowPos:改變子窗口、彈出窗口和頂層窗口的大小、位置以及順序。CWnd::GetDlgItem:獲得指定的對(duì)話框中具有指定ID的控件。CWnd::UpdateData:初始化對(duì)話框或獲得對(duì)話框中的數(shù)據(jù)。CWnd::GetWindowRect:獲得CWnd的屏幕坐標(biāo)。CWnd::GetDC:獲得客戶區(qū)的設(shè)備環(huán)境。
CWnd::RedrawWindow:更新客戶區(qū)中的指定矩形或區(qū)域。CWnd::UpdateWindow:更新客戶區(qū)。
CWnd::Invalidate:使整個(gè)客戶區(qū)無(wú)效。CWnd::ShowWindow:顯示或隱藏窗口。
CWnd::ClientToScreen:將給定點(diǎn)或顯示器上矩形的客戶區(qū)坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo)。
CWnd::ScreenToClient:將給定點(diǎn)或顯示器上矩形的屏幕坐標(biāo)轉(zhuǎn)換為客戶坐標(biāo)。CWnd::SetWindowText:將窗口的文本或標(biāo)題文字(如果有)設(shè)為指定的文本。CWnd::SetFont:設(shè)置當(dāng)前字體。
CWnd::GetDlgItemInt:將給定對(duì)話框中控件的文本轉(zhuǎn)換為整數(shù)。
CWnd::SetTimer:安裝一個(gè)系統(tǒng)定時(shí)器,當(dāng)它被激活時(shí),發(fā)送一個(gè)WM_TIMER消息。
CWnd::KillTimer:銷毀一個(gè)系統(tǒng)定時(shí)器。CWnd::FlashWindow:使窗口閃爍一次。CWnd::MessageBox:創(chuàng)建并顯示一個(gè)窗口,其中包含了應(yīng)用程序提供的消息和標(biāo)題
第四篇:客戶端學(xué)習(xí)總結(jié)
前面幾個(gè)星期,我們學(xué)習(xí)了客戶端的知識(shí),其中主要有3個(gè)部分:xhtml,css,js。通過(guò)學(xué)習(xí),我對(duì)客戶端網(wǎng)頁(yè)編程有了一個(gè)初步的了解,xhtml主要是頁(yè)面內(nèi)容的一個(gè)體現(xiàn),是靜態(tài)網(wǎng)頁(yè)設(shè)計(jì)的基礎(chǔ),css用來(lái)控制頁(yè)面的布局和網(wǎng)頁(yè)的表現(xiàn)形式,javascript用于動(dòng)態(tài)控制網(wǎng)頁(yè),以及對(duì)表單收集的數(shù)據(jù)進(jìn)行客戶端的驗(yàn)證。
xhtml和css是基礎(chǔ),這部分的內(nèi)容不多也比較簡(jiǎn)單,學(xué)起來(lái)也比較輕松,主要是把其中概念要理解,而我們?cè)趯?shí)際編寫(xiě)網(wǎng)頁(yè)時(shí)可以借助幫助手冊(cè),而且我們以后可能不會(huì)直接從事這方面的工作,所以現(xiàn)在只需要把基本的概念理解了就行了,以后在工作中能看懂代碼就行。
javascript是我們客戶端學(xué)習(xí)的重點(diǎn),因?yàn)樗彩且婚T編程語(yǔ)言,通過(guò)對(duì)它的學(xué)習(xí),我們能掌握一些程序設(shè)計(jì)的技巧和思維。更為重要的是,它是一門面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它可以為我們以后學(xué)習(xí)java打下一個(gè)比較好的基礎(chǔ)。我們以前學(xué)過(guò)的c語(yǔ)言是一種面向過(guò)程的語(yǔ)言,通過(guò)它的學(xué)習(xí),我們對(duì)程序設(shè)計(jì)的一些思維有了初步的了解,知道了3種流程控制,而對(duì)javascript的學(xué)習(xí),我們了解到了面向?qū)ο蟮囊恍┗A(chǔ)知識(shí),對(duì)象的概念等。
javascript也是我們這段時(shí)間學(xué)習(xí)的一個(gè)難點(diǎn),由于以前沒(méi)有面向?qū)ο蟪绦蛟O(shè)計(jì)的經(jīng)驗(yàn),這部分剛開(kāi)始學(xué)的時(shí)候?qū)W得不是很好,要背的知識(shí)點(diǎn)太多,一部分知識(shí)要我們學(xué)習(xí)了java后重新回來(lái)才完全理解,有很多新的英語(yǔ)單詞需要記。幸好李老師給了我們一個(gè)中文手冊(cè),有時(shí)候記不住的地方可以查手冊(cè),提高了我們學(xué)習(xí)的效率。對(duì)這部分的學(xué)習(xí),感覺(jué)要從總體上來(lái)把握學(xué)習(xí)的知識(shí)點(diǎn),不要抓住細(xì)節(jié)不放,如果能夠?qū)⒆约旱乃季S提高到一個(gè)新的高度再回過(guò)頭來(lái)看細(xì)節(jié)就比較輕松了。
javascript是一種弱類型的語(yǔ)言,它的特點(diǎn)是一個(gè)變量可以被賦值為多種類型的數(shù)據(jù),我們?cè)诼暶髯兞康臅r(shí)候不用聲明它的類型,因?yàn)槲覀儾⒉魂P(guān)心它的具體類型,這也是為什么在javascript中沒(méi)有類這個(gè)概念的原因。類本身是一種復(fù)合的數(shù)據(jù)類型,對(duì)象才是具體的變量,在javascript中,任何一個(gè)變量可以被賦予任何類型的數(shù)據(jù),我們對(duì)變量的類型并不關(guān)心,因此也沒(méi)有類的概念。
消防支隊(duì)開(kāi)展先進(jìn)性教育集中學(xué)習(xí)總結(jié)黨員先進(jìn)性教育活動(dòng)學(xué)習(xí)小結(jié)
科學(xué)發(fā)展觀活動(dòng)學(xué)習(xí)調(diào)研階段總結(jié)
在javascript的后面幾章,我們著重學(xué)習(xí)了對(duì)象模型,重點(diǎn)是標(biāo)準(zhǔn)文檔對(duì)象模型dom和傳統(tǒng)對(duì)象模型,以及瀏覽器對(duì)象模型,這部分的內(nèi)容,主要是要記得多,知道每個(gè)對(duì)象都有什么屬性和方法,最后我們總結(jié)了表單的驗(yàn)證,只要前面的內(nèi)容都弄懂了,這部分學(xué)習(xí)起來(lái)就沒(méi)有問(wèn)題。
通過(guò)這2個(gè)多星期的學(xué)習(xí),我對(duì)客戶端網(wǎng)頁(yè)編程有了一定的了解,已經(jīng)進(jìn)入java的學(xué)習(xí)了,這才是我們學(xué)習(xí)的重點(diǎn),要更加的努力才行。
第五篇:[推薦]加工中心編程技巧小結(jié)
[推薦]加工中心編程技巧小結(jié)
一般編程技巧
cnc加工中心中幾組常用指令的區(qū)別及編程技巧
隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)產(chǎn)品的性能和質(zhì)量要求越來(lái)越高,從而使數(shù)控機(jī)床
應(yīng)
用已得到一定程度的普及,而高性能高效率的加工中心也逐漸成為社會(huì)所需。通過(guò)幾年的加
工
中心實(shí)際應(yīng)用和教學(xué)實(shí)踐及摸索,筆者將自己的體會(huì)和經(jīng)驗(yàn)總結(jié)出來(lái),希望對(duì)廣大讀者有所
啟 迪。1. 暫停指令
G04X(U)_/P_ 是指刀具暫停時(shí)間(進(jìn)給停止,主軸不停止),地址P或X后的數(shù)值是暫
停時(shí)
間。X后面的數(shù)值要帶小數(shù)點(diǎn),否則以此數(shù)值的千分之一計(jì)算,以秒(s)為單位,P后面數(shù)
值
不能帶小數(shù)點(diǎn)(即整數(shù)表示),以毫秒(ms)為單位。例如,G04 X2.0;或G04 X2000;
暫停2秒
G04 P2000;但在某些孔系加工指令中(如G82、G88及G89),為了保證孔底的精糙度,當(dāng)?shù)毒呒庸ぶ?/p>
孔底
時(shí)需有暫停時(shí)間,此時(shí)只能用地址P表示,若用地址X表示,則控制系統(tǒng)認(rèn)為X是X軸坐標(biāo)
值進(jìn)行 執(zhí)行。
例如,G82X100.0Y100.0Z-20.0R5.0F200P2000;鉆孔(100.0,100.0)至孔底暫停2秒 G82X100.0Y100.0Z-20.0R5.0F200X2.0;
鉆孔(2.0,100.0)至孔底不會(huì)暫停。
2. M00、M01、M02和M30的區(qū)別與聯(lián)系
M00為程序無(wú)條件暫停指令。程序執(zhí)行到此進(jìn)給停止,主軸停轉(zhuǎn)。重新啟動(dòng)程序,必須先回? 絁OG狀態(tài)下,按下CW(主軸正轉(zhuǎn))啟動(dòng)主軸,接著返回AUTO狀態(tài)下,按下START鍵才能
啟動(dòng)程序。
M01為程序選擇性暫停指令。程序執(zhí)行前必須打開(kāi)控制面板上OP STOP鍵才能執(zhí)行,執(zhí)行
后的
效果與M00相同,要重新啟動(dòng)程序同上。M00和M01常常用于加工中途工件尺寸的檢驗(yàn)或排屑。M02為主程序結(jié)束指令。執(zhí)行到此指令,進(jìn)給停止,主軸停止,冷卻液關(guān)閉。但程序光標(biāo)停
在 程序末尾。
M30為主程序結(jié)束指令。功能同M02,不同之處是,光標(biāo)返回程序頭位置,不管M30后是否
還有 其他程序段。3. 地址D、H的意義相同
刀具補(bǔ)償參數(shù)D、H具有相同的功能,可以任意互換,它們都表示數(shù)控系統(tǒng)中補(bǔ)償寄存器的地
址名稱,但具體補(bǔ)償值是多少,關(guān)鍵是由它們后面的補(bǔ)償號(hào)地址來(lái)決定。不過(guò)在加工中心
中,為了防止出錯(cuò),一般人為規(guī)定H為刀具長(zhǎng)度補(bǔ)償?shù)刂?,補(bǔ)償號(hào)從1~20號(hào),D為刀具半徑補(bǔ)
償?shù)?/p>
址,補(bǔ)償號(hào)從21號(hào)開(kāi)始(20把刀的刀庫(kù))。
例如,G00G43H1Z100.0;
G01G41D21X20.0Y35.0F200;
4. 鏡像指令
鏡像加工指令M21、M22、M23。當(dāng)只對(duì)X軸或Y軸進(jìn)行鏡像時(shí),切削時(shí)的走刀順序(順銑與
逆銑),刀補(bǔ)方向,圓弧插補(bǔ)轉(zhuǎn)向都會(huì)與實(shí)際程序相反,如圖1所示。當(dāng)同時(shí)對(duì)X軸和Y軸進(jìn)行
鏡像
時(shí),走刀順序,刀補(bǔ)方向,圓弧插補(bǔ)轉(zhuǎn)向均不變。
注意:使用鏡像指令后必須用M23進(jìn)行取消,以免影響后面的程序。在G90模式下,使用鏡
像
或取消指令,都要回到工件坐標(biāo)系原點(diǎn)才能使用。否則,數(shù)控系統(tǒng)無(wú)法計(jì)算后面的運(yùn)動(dòng)軌
跡,會(huì)出現(xiàn)亂走刀現(xiàn)象。這時(shí)必須實(shí)行手動(dòng)原點(diǎn)復(fù)歸操作予以解決。主軸轉(zhuǎn)向不隨著鏡像指令變
化。
圖1 鏡像時(shí)刀補(bǔ)、順逆變化
5. 圓弧插補(bǔ)指令
G02為順時(shí)針插補(bǔ),G03為逆時(shí)針插補(bǔ),在XY平面中,格式如下:G02/G03X_Y_I_K_F_或
G02/G 03 X_Y_R_F_,其中X、Y為圓弧終點(diǎn)坐標(biāo),I、J為圓弧起點(diǎn)到圓心在X、Y軸上的增量值,R為圓
弧半徑,F(xiàn)為進(jìn)給量。在圓弧切削時(shí)注意,q≤180°,R為正值;q>180°,R為負(fù)值;I、K的指定也可用R指定,當(dāng)
兩者同時(shí)被指定時(shí),R指令優(yōu)先,I、K無(wú)效;R不能做整圓切削,整圓切削只能用I、J、K
編程,因?yàn)榻?jīng)過(guò)同一點(diǎn),半徑相同的圓有無(wú)數(shù)個(gè),如圖2所示。
圖2 經(jīng)過(guò)同一點(diǎn)的圓
當(dāng)有I、K為零時(shí),就可以省略;無(wú)論G90還是G91方式,I、J、K都按相對(duì)坐標(biāo)編程;圓
弧插補(bǔ)
時(shí),不能用刀補(bǔ)指令G41/G42。6. G92與G54~G59之間的優(yōu)缺點(diǎn)
G54~G59是在加工前設(shè)定好的坐標(biāo)系,而G92是在程序中設(shè)定的坐標(biāo)系,用了G54~G59就
沒(méi)有
必要再使用G92,否則G54~G59會(huì)被替換,應(yīng)當(dāng)避免,如表1所示。
表1 G92與工作坐標(biāo)系的區(qū)別
注意:(1)一旦使用了G92設(shè)定坐標(biāo)系,再使用G54~G59不起任何作用,除非斷電重新啟
動(dòng)
系統(tǒng),或接著用G92設(shè)定所需新的工件坐標(biāo)系。(2)使用G92的程序結(jié)束后,若機(jī)床沒(méi)有
回? 紾92設(shè)定的原點(diǎn),就再次啟動(dòng)此程序,機(jī)床當(dāng)前所在位置就成為新的工件坐標(biāo)原點(diǎn),易發(fā)
生事
故。所以,希望廣大讀者慎用。
7. 編制換刀子程序。
在加工中心上,換刀是不可避免的。但機(jī)床出廠時(shí)都有一個(gè)固定的換刀點(diǎn),不在換刀位置,便不能夠換刀,而且換刀前,刀補(bǔ)和循環(huán)都必須取消掉,主軸停止,冷卻液關(guān)閉。條件繁多,如果每次手動(dòng)換刀前,都要保證這些條件,不但易出錯(cuò)而且效率低,因此我們可以編制一個(gè)
換
刀程序保存諳低襯詿婺冢諢壞妒?,在MDI狀態(tài)下用M98調(diào)用就可以一次性完成換刀動(dòng)
作。
以PMC-10V20加工中心為例,程序如下:
O2002;
(程序名)G80G40G49;(取消固定循環(huán)、刀補(bǔ))
M05;
(主軸停止)M09;
(冷卻液關(guān)閉)G91G30Z0;
(Z軸回到第二原點(diǎn),即換刀點(diǎn))
M06;
(換刀)
M99;
(子程序結(jié)束)在需要換刀的時(shí)候,只需在MDI狀態(tài)下,鍵入“T5M98P2002”,即可換上所需刀具T5,從
而避
免了許多不必要的失誤。廣大讀者可根據(jù)自己機(jī)床的特點(diǎn),編制相應(yīng)的換刀子程序。
8.其他
程序段順序號(hào),用地址N表示。一般數(shù)控裝置本身存儲(chǔ)器空間有限(64K),為了節(jié)省存儲(chǔ)
空
間,程序段順序號(hào)都省略不要。N只表示程序段標(biāo)號(hào),可以方便查找編輯程序,對(duì)加工過(guò)程
不
起任何作用,順序號(hào)可以遞增也可遞減,也不要求數(shù)值有連續(xù)性。但在使用某些循環(huán)指令,跳
轉(zhuǎn)指令,調(diào)用子程序及鏡像指令時(shí)不可以省略。
9.同一條程序段中,相同指令(相同地址符)或同一組指令,后出現(xiàn)的起作用。
例如,換刀程序,T2M06T3;換上的是T3而不是T2;G01G00X50.0Y30.0F200;執(zhí)行的是G00(雖有F值,但也不執(zhí)行G01)。不是同一組的指令代碼,在同一程序段中互換先后順序執(zhí)行效果相同。
G90G54G00X0Y0Z100.0;G00G90G54X0Y0Z100.0;以上各項(xiàng)均在PMC-10V20(FANUC SYSTEM)加工中心上運(yùn)行通過(guò)。在實(shí)際應(yīng)用中,只有深
刻理
解各種指令的用法和編程規(guī)律,


文檔為doc格式
聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。
數(shù)控車床編程和改造技巧(5篇)
數(shù)控車床編程和改造技巧 摘 要:隨著科學(xué)技術(shù)的發(fā)展,普通機(jī)床越來(lái)越不能滿足市場(chǎng)的需求,其勞動(dòng)強(qiáng)度大,危險(xiǎn)性高,且不能滿足現(xiàn)代科學(xué)的批量生產(chǎn)需要,越來(lái)越多的企業(yè)將普通機(jī)床逐漸轉(zhuǎn)......
刀具和編程總結(jié)
① 白鋼刀(即高速鋼刀具)因其通體銀白色而得名,主要用于直壁加工。白鋼刀價(jià)格便宜,但切削壽命短、吃刀量小、進(jìn)給速度低、加工效率低,在數(shù)控加工中較少使用。 ② 飛刀(即鑲嵌式刀......
編程題總結(jié)(范文大全)
C作業(yè)匯總 1. short a,b=32767; /*short類型在內(nèi)存中占2B*/ a=b+1; 問(wèn):a的值是多少?并分析原因。 2. 有一4位數(shù)整數(shù),假設(shè)用abcd表示,請(qǐng)把這個(gè)4位數(shù)的每個(gè)數(shù)位用表達(dá)式表示出來(lái)......
數(shù)據(jù)庫(kù)編程總結(jié)(推薦)
數(shù)據(jù)庫(kù)編程總結(jié) 當(dāng)前各種主流數(shù)據(jù)庫(kù)有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS A......
一點(diǎn)Duilib編程總結(jié)
一點(diǎn)Duilib編程總結(jié) 1.duilib簡(jiǎn)介 duilib是一個(gè)開(kāi)源的DirectUI界面庫(kù),簡(jiǎn)潔但是功能強(qiáng)大。而且還是BSD的license,所以即便是在商業(yè)上,大家也可以安心使用。 現(xiàn)在大家可以從這個(gè)......
Mudos編程總結(jié)[推薦]
Mudos編程總結(jié)1,Mudos系統(tǒng)調(diào)用系統(tǒng) MudLib系統(tǒng)文件 的過(guò)程和一些特點(diǎn)Mudos啟動(dòng)以后先要尋找一個(gè)配置文件,用來(lái)配置MudLib文件系統(tǒng)的一些信息(這里時(shí)config.cfg),找不到就無(wú)法啟......
描述性編程總結(jié)(范文)
一、描述性編程 1、 QTP的運(yùn)行原理 封裝被測(cè)對(duì)象(TO)到對(duì)象倉(cāng)庫(kù) 對(duì)比對(duì)象倉(cāng)庫(kù)里的對(duì)象屬性(TO)和運(yùn)行時(shí)的真實(shí)被測(cè)對(duì)象的屬性(RO) 對(duì)比一致后,找得到相應(yīng)的對(duì)象(RO),按照腳本......
編程題總結(jié)
大家必須掌握每種類型的1-3題。題號(hào)考點(diǎn)要求48、 將兩個(gè)兩位數(shù)的整數(shù)合并成一個(gè)整數(shù) 65、 兩個(gè)正整數(shù)合并成一個(gè)整數(shù) 71、 兩個(gè)正整數(shù)合并成一個(gè)整數(shù) 77、 兩個(gè)正整數(shù)合并成......