PB11.5+WEB客户端编程技巧总结(★)

时间:2019-05-12 03:57:18下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《PB11.5+WEB客户端编程技巧总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《PB11.5+WEB客户端编程技巧总结》。

第一篇:PB11.5+WEB客户端编程技巧总结

PB11.5 WEB客户端编程技巧总结

一、概述

用PB11.5把现有C/S程序转换成WEB应用程序后,保留了大部分C/S环境下的代码,并且大部分都能执行过去。但是在BS平台下,原来的PB代码从客户端转成了IIS上的服务代码,原的“客户端”就成了浏览器,转换后的客户端编程其实就是面向浏览器的编程。

根据目前我对PB11.5所了解的情况,PB11在代码方面可以使用条件编译方式嵌入.NET代码,其实我感觉.net里能实现的内容,用PB代码也基本能实现,.net里不能实现的,PB也可实现(如datawindow),但这些都属于服务端的编程范畴,实际应用中很少会碰到在PB里再嵌入.net代码的,除非要写一些很特殊的代码,所以,可以说,服务端方面仅用PB代码就可以彻底解决。

但实际上,这种纯PB代码的程序一发布成WEB后,会存在不少问题,在C/S环境下,要完成一个操作往往需要多个交互过程,如“打开窗口、选择行、输入数据、返回、刷新页面”这么一个过程,转成B/S后,运行是这样的“打开窗口(POSTBACK)、选择行(POSTBACK)、输入数据(回车后POSTBACK)、返回(POSTBACK)”,那么多的POSTBACK使得操作变得很笨重,就连简单的一个MESSAGEBOX,都要2次POSTBACK:“打开消息窗(POSTBACK)、点确定(POSTBACK)”。因此,使用PB11开发WEB程序将要面临一个很严峻的问题:如何提高客户端的性能,减少POSTBACK次数。

值得庆幸的是,PB11.5的WEB页面使用了AJAX技术,POSTBACK并不会产生整个页面的提交,而是部分提交。另外,PB11.5还提供了不少客户端的编程接口,可以通过这些编程接口进一步优化页面。那么,有哪些地方可以运用javascript和html代码优化页面呢?

1、数据窗口对象appendedhtml属性。

刚接触PB11.5的WEB开发的时候,一定会被他的那么多unsupport属性所蒙蔽,原先在C/S下绚丽多彩的界面,转成B/S后变得暗淡无光,因此也就失去了进一步开发的乐趣。其实不然,PB提供了appendedhtml的属性后,使WEB界面编程变得更为灵活,一个小小的appendedhtml,可以将DHTML、javascript等所有页面技术嵌入到里面去。可以实现的效果如:透明、垂直居中、渐变、鼠标移动特效等等。

查看发布成WEB后的页面代码,会发现,appendedhtml里的内容是放在

里,也就是说,数据窗口的内容转成了WEB元素,如标签转成了
,列就是。Appendedhtml的写法:引号必须使用转义符~如:modify(‘sfz.html.appendedhtml = “style = ~~”padding-top:2px;~~“’),至于如何设置元素属性,可以查看《DHTML手册》。

2、数据窗口事件。此方法是在数据窗口对象初始化的时候写入对应的脚本,如: #IF DEFINED PBWEBFORM THEN dw_1.JavaScriptFile = ”uo_dw.js“ dw_1.OnClientItemChanged = ”MyItemChanged“ #END IF 另外,在发布成WEB的时候,必须嵌入已写好的javascript脚本,这些被脚本会在页面的head区被包含进去。

经过上面代码一处理,数据窗口的事件被触发后就会直接跳到javascript脚本去处理而不执行回调(就是PB里写的程序不会被执行)。

那么,哪些事件支持脚本编程呢?根据PB11.5文档所提供的技术说明,目前仅限于数据窗口内事件处理,包括clicked、DoubleClicked、RButtonDown、ButtonClicked、ButtonClicking、ItemFocusChanged、ItemError、ItemChanged、RowFocusChanged。在指定客户端事件脚本的时候,事件前都必须加”OnClient”。

二、客户端程序的优化思路

借助javascript脚本技术,我们可以对目前程序上的几个操作瓶颈进行优化。

1、数据窗口的条件性POSTBACK。

如果不对datawindow进行脚本处理,那么如果事件内有代码,则将会在触发该事件的时候执行POSTBACK,这样会有很多没必要的POSTBACK。如,在itemchanged事件里写入了对身份证输入后进行检查的代码,在IE下运行的情况是,该数据窗口的任何列输入完后都会执行POSTBACK,有没有办法实现只输入身份证的时候才POSTBACK呢?可以通过以下方法:

(1)在窗口的open事件里写入脚本。#IF DEFINED PBWEBFORM THEN dw_1.JavaScriptFile = ”uo_dw.js“ dw_1.OnClientItemChanged = ”MyItemChanged“ #END IF(2)脚本里写入条件回调程序。

function MyItemChanged(sender, rowNumber, columnName,newValue){if(columnName== ‘sfz’){return PBDataWindow_ItemChangedReject(sender, rowNumber, columnName, newValue);} Else {//do nothing} } 其中,PBDataWindow_ItemChangedReject为调用数据窗口的itemchanged事件,数据窗口提供的回调函数,可以在PBDataWindow.js找到,查阅PB帮助文档可以查看其具体用法。

2、PB代码向javascript脚本转化。

首先,必须理解PB-WEB程序的运行模式,见下图: 数据库 SQL 数据集 EASERVER 代理对象 IIS PBVM request IE 代理对象 response 从上图可以看出,IE与数据库之间其实就是数据请求的关系,我们可以认为,除了需要从服务端下载数据和页面加载的请求外,其他都是没必要的请求。这些没必要的请求包括:

1)messagebox。消息提示可以说是UI界面交互的最重要的环节之一,几乎所有业务操作都会涉及,很遗憾的是,除了数据窗口事件里的javascript支持本地消息提示外,目前还没有一种办法可以脱离IIS,直接在PB代码里调用IE消息提示的方法。2)简单的数据检查。如登录时的验证码、输入格式校验、身份证合法性检查等,可以直接在javascript里处理。

3)辅助性的数据输入。包括下拉数据窗口、下拉日历等。在传统的C/S模式下,直接打开一个窗口就可以实现下拉数据选择功能,但是这种方法在WEB下已经行不通,频繁的POSTBACK会使操作变得笨重、缓慢,甚至比直接输入来的慢。但是有些下拉的数据又需要从服务端取,这样可以将下拉窗口设计成共用模块启动时直接装载到页面,在需要调用的地方用javascript代码显示出来,然后象服务端请求数据,选择数据后返回、设置数据、隐藏下拉窗口,这一过程只要一个POSTBACK,即数据请求过程。

4)页面切换。在IE下打开多个业务窗口,这些窗口都已经装载到了IE下,可以通过javascript脚本实现页面显示、隐藏,以提高响应速度。

5)窗口、对象的关闭、销毁。类似此操作,可以直接在IE下完成,无需要再送到IIS上处理。

6)实现回车后焦点切换。打开PB安装文件所在路径,打开F:Program FilesSybasePowerBuilder 11.5DotNETwebrootscripts目录下的dwcommon.js,并修改其代码段。函数为: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);实现按回车键的tab效果。

三、PB与javascript混合编程技巧

1、使用PB提供的javascript函数

打开IIS目录,在发布好的站点文件夹下,有个scripts文件夹,存放的是所有PB的内置函数,这些函数描述了客户端的调用、回调方法,具体使用方法在PB文档里有做了描述。

数据窗口对象(大部分数据窗口函数接口里都用sender做为参数)可以引用的函数可以在dwcommon.js里的function HTDW_DataWindowClass(name)里找到,如下图:

如:this.SetItem = HTDW_SetItem;这行表示,可以调用数据窗口的SetItem()函数进行设置数据窗口值,至于SetItem参数,可以查找HTDW_SetItem函数的参数结构。如下图:

调用举例:

数据窗口的回调函数,可以在PBDataWindow.js里找到,上面已经举过例子,这里不做描述了。

2、灵活地操控WEB元素

WEB页面上,每个元素都有一个ID值,是唯一标识该元素的键值。如表示“确定”按钮的ID为ID_OK。

要在javascript里编写程序实现与页面元素交互,最重要的一点是要弄清楚从PB转换成页面后的元素的ID值,这些ID值是IIS发送过来的,与PB里的对象名有一定的对应关系。目前PB技术文档没有这方面的说明,但我们可以通过多种途径来获得这些元素ID。1)利用event对象获得窗口事件的源、父对象

如,可以定义var o = window.event.srcElement;获取鼠标在窗口上点击的对象,通过o.parentElement可以获取该对象的父对象。

2)通过getElementByName、getElementById、getElementsByTagName等方法获取对象ID。

3)通过alert消息提示将对象ID显示出来。

有了这些ID,接下去如何操控界面元素,就和C/S编程差不多了,有关函数操作、属性操作等可以参考javascript和DHTML相关资料。

应用举例:

第二篇:网络数据库讲稿(客户端开发编程)

网络数据库讲稿(14)

3/26/2013 SQL Server客户端开发与编程

一、引言

1.编程模式:C/S模式和B/S模式。

2.客户端编程语言:ASP,VB,VC,VFP,PB,Delphi,Access,ASP,JSP等,都可访问SQL数据库。3.可访问多种数据库。

二、数据库编程接口

1.ODBC ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。

ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由ODBC驱动程序完成。也就是说,不论是FoxPro、Access , MYSQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

2.OLE DB OLE DB(Object Linking and Embedding,对象连接与嵌入),简称OLE技术;DB(data base)。

OLE DB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括ODBC的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法。

3.ADO ADO(ActiveX Data Objects)是微软公司的一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个桥梁。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。

ADO是一种面向对象的编程接口,是一个能够访问不同数据库的统一接口,它在OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。

4.三种接口之间的关系

ODBC是Microsoft引进的一种早期数据库接口技术。它实际上是ADO的前身。早期的数据库连接是非常困难的,每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解,因此,能处理各种各样数据库的通用的API就应运而生了,也就是现在的ODBC(Open Database Connectivity)。ODBC是人们在创建通用API的早期产物,有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库。

网络数据库讲稿(14)

3/26/2013 OLEDB位于ODBC层与应用程序之间。在一些应用中,例如ASP、Delphi,ADO是位于OLEDB之上的“应用程序”。ADO调用先被送到OLEDB,然后再交由ODBC处理。

三、常用ADO对象方法和属性

1.Connection对象

P214, P220 2.Command对象

P214, P227 3.Recordset对象

P215, P220

四、用其它语言访问SQL数据库

ASP,VB,VC,VFP,PB,Delphi,Access,ASP,JSP等,都可访问SQL数据库。

以下仅介绍ASP、VFP、Delphi。五.ASP访问SQL数据库

1.常用ASP内建对象 Request Response Application Session Server 2.建立访问环境

可使用OLE DB或ODBC。

(1)建立使用OLE DB的访问环境

需要在“程序/管理工具/Internet服务器管理”中,右击“默认Web站点”,再单击“属性”,然后设置“主目录”和“文档”。(如P218图6.8)(2)建立使用ODBC数据源的环境

需要在“程序/管理工具/数据源(ODBC)”中配置,在DNS配置框中选“使用用户输入登录ID和密码的SQL Server验证”。P213 3.连接到数据源 P214 在ASP中引用ADO对象,要加前缀ADODB。(1)创建一个ADO Connection对象。例如:

Set cn=Server.CreateObject(“ADODB.Connection”)(2)连接到数据源

①使用OLE DB接口

首先指定OLD DB提供者 例:

cn.Provider=”sqloledb” 再连接到数据源 例:

cn.Open “Server=zyxy;Database=教学管理;uid=sa;pwd=‟‟”

网络数据库讲稿(14)

3/26/2013 ②使用ODBC数据源 例:

cn.Open “dsn=jxgl;uid=sa;pwd=‟‟”

„jxgl是2(2)中建立的数据源

4.执行访问数据源的命令并创建结果集对象

例:

set rs=cn.Execute(“select * from 学生 where 性别=‟男‟”)5.关闭连接

例: rs.close cn.close 6.应用举例

例6.1

P221 用cn.Excute创建的Recordset对象,在结果集中只能用MoveNext逐步向尾部单方向移动记录指针。还有另一种方法创建Recordset对象:P222L18。用此种方法创建的Recordset对象的Open方法有四个参数。

六、在客户端用VFP访问网络数据库SQL Server上的数据库(一)在客户端设置ODBC: 在本地机上:

开始/设置/控制面板/管理工具/数据源(ODBC)在此添加数据源,命名数据源名(假定命名为jxgl),填写服务器名,使用SQL Server验证,更改默认的数据库。

附:可继续完成以下设置: 在客户端VFP环境下打开项目管理器(项目中至少应有一个数据库),展开数据库,选择连接,单击新建按钮,打开连接设计器对话框,填写有关内容(也可以打开一个数据库,用create connection命令打开连接设计器对话框),最后在保存对话框输入连接名(假定为LJ)。该连接还可使用以下命令建立:

CREATE CONNECTION <连接名> DATASOURCE <数据源名> USERID PASSWORD <密码> DATABASE <数据库名> 例:CREATE CONNECTION LJ DATASOURCE “jxgl” USERID “sa” PASSWORD “”

DATABASE “教学管理”

(二)在客户端VFP中使用SPT(SQL Pass Through)技术

1.连接数据源

<连接句柄变量名>=SQLConnect(<数据源名>,,<帐户密码>)例如:

dh=SQLCONNECT(“LJ”,”sa”,””)也可使用

<连接句柄变量名>=SQLStringConnect(“dsn=<数据源名>;uid=;

pwd=<帐户密码>”)例如

dh=SQLStringConnect(“dsn=LJ;uid=sa;pwd=”)如果连接成功,dh返回正整数句柄,失败返回-1。

附:也可以使用命令 <连接句柄变量名>=SQLConnect(<连接名>)例:DH=SQLConnect(“LJ”)2.执行SQL命令

SQLEXEC(<连接句柄变量名>,)

网络数据库讲稿(14)

3/26/2013 在查询命令中添加READWRITE关键词,可得到可读写的临时表。可用SQLCOMMIT(DH)、SQLROLLBACK(DH)提交或回滚事务。3.断开连接

SQLDISCONNECT(DH)

七、Delphi访问SQL数据库

1.ADO控件

P304 2.使用TADODataSet访问SQL数据库

第三篇:个人总结的VC编程技巧(范文模版)

1.等于号=表示赋值操作;= =表示逻辑操作。在使用if或(a= =b)时候需要注意。2.浮点型数据判断相等使用fabs(a-b)<0.00001f 3.数组使用SetSize(nSize)之前需要清空RemoveAll()4.修改资源编译后exe不执行处理方法:选中资源,将其Property属性对话框中,修改其File Name属性,改名,保存后会生成其他文件名

5.对于绘制文字TextOut(),在SetMapMode(MM_LOMETRIC)后,需要重新选择字体,否则打印预览时候会出现字体乱码现象。

6.赋值型条件语句需要加括号,否则先执行运算符,再执行条件语句,如int a=b+c>0 ? 1 :-1,时,将先执行(b+c)。

MFC的消息处理函数

1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc

2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数

3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数

4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数

5.OnCommand()该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数

6.OnCmdMsg()根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数

MFC应用程序创建窗口的过程

1.PreCreateWindow()该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数(可以设置窗口风格等等)

2.PreSubclassWindow()这也是一个重载函数,允许首先子分类一个窗口

3.OnGetMinMaxInfo()该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸

4.OnNcCreate()该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告诉窗口的客户区即将被创建

5.OnNcCalcSize()该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小

6.OnCreate()该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个窗口已经被创建

7.OnSize()该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口大小已经发生变化

8.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动

9.OnChildNotify()该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一个窗口刚刚被创建

MFC应用程序关闭窗口的顺序(非模态窗口)

1.OnClose()消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送此消息

2.OnDestroy()消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息

3.OnNcDestroy()消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁后发送此消息

4.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用

MFC应用程序中打开模式对话框的函数调用顺序

1.DoModal()重载函数,重载DoModal()成员函数 2.PreSubclassWindow()重载函数,允许首先子分类一个窗口

3.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建

4.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

5.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动

6.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体

7.OnInitDialog()消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对话框中的控件,或者是创建新控件

8.OnShowWindow()消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWindow()函数调用

9.OnCtlColor()消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件的颜色

10.OnChildNotify()重载函数,作为WM_CTLCOLOR消息的结果发送

MFC应用程序中关闭模式对话框的顺序

1.OnClose()消息响应函数,响应WM_CLOSE消息,当“关闭”按钮被单击的时候,该函数被调用

2.OnKillFocus()消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送

3.OnDestroy()消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送

4.OnNcDestroy()消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送

5.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

打开无模式对话框的顺序

1.PreSubclassWindow()重载函数,允许用户首先子分类一个窗口 2.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建

3.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

4.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动

5.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体

以上这些的执行都是按给定的顺序执行!

只有清楚的了解应用程序的执行顺序,才能在编写代码的时候知道,在什么时候应该执行什么,以及在什么地方该处理什么!

这只是本人总结的一点小小的经验,希望能对MFC的初学者有所帮助!MFC应用程序中处理消息的顺序

1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc

2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数

3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数

4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数

5.OnCommand()该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数

6.OnCmdMsg()根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数

MFC应用程序创建窗口的过程

1.PreCreateWindow()该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数(可以设置窗口风格等等)

2.PreSubclassWindow()这也是一个重载函数,允许首先子分类一个窗口

3.OnGetMinMaxInfo()该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸

4.OnNcCreate()该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告诉窗口的客户区即将被创建

5.OnNcCalcSize()该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小

6.OnCreate()该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个窗口已经被创建

7.OnSize()该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口大小已经发生变化

8.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动

9.OnChildNotify()该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一个窗口刚刚被创建

MFC应用程序关闭窗口的顺序(非模态窗口)

1.OnClose()消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送此消息

2.OnDestroy()消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息

3.OnNcDestroy()消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁后发送此消息

4.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用

MFC应用程序中打开模式对话框的函数调用顺序

1.DoModal()重载函数,重载DoModal()成员函数 2.PreSubclassWindow()重载函数,允许首先子分类一个窗口

3.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建

4.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

5.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动

6.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体

7.OnInitDialog()消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对话框中的控件,或者是创建新控件

8.OnShowWindow()消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWindow()函数调用

9.OnCtlColor()消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件的颜色

10.OnChildNotify()重载函数,作为WM_CTLCOLOR消息的结果发送

MFC应用程序中关闭模式对话框的顺序

1.OnClose()消息响应函数,响应WM_CLOSE消息,当“关闭”按钮被单击的时候,该函数被调用

2.OnKillFocus()消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送 3.OnDestroy()消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送

4.OnNcDestroy()消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送

5.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

打开无模式对话框的顺序

1.PreSubclassWindow()重载函数,允许用户首先子分类一个窗口

2.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建

3.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

4.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动

5.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体

MFC的一些主要成员函数

CWinThread::m_pMainWnd:保存指向应用程序的主窗口指针。CWinThread::GetMainWnd:查询指向线程主窗口的指针。CWinThread::InitInstance:重载以实现线程实例的初始化。AfxGetApp:获得指向CWinApp对象的指针。

AfxGetInstanceHandle:获得当前应用程序实例的句柄。AfxGetResourceHandle:获得应用程序资源的句柄。

AfxGetAppName:获得一个字符串指针,其中包含了应用程序的名字。另外,如果你拥有一个指向CWinApp对象的指针,可以通过m_pszExename来获得应用程序的名字。

CDocument::IsModified:标识文档从最近一次保存以来是否被修改过。CDocument::UpdateAllViews:通知所有视图文档已被修改的消息。CWnd::m_hWnd:指明与这个CWnd对象相关联的HWND句柄。CWnd::Create:创建并初始化与CWnd对象相关联的子窗口。

CWnd::PreCreateWindow:在与CWnd对象相关联的窗口被创建之前调用。CWnd::IsWindowEnabled:确定一个窗口是否允许鼠标和键盘输入。CWnd::EnableWindow:允许或禁止鼠标和键盘输入。CWnd::SetWindowPos:改变子窗口、弹出窗口和顶层窗口的大小、位置以及顺序。CWnd::GetDlgItem:获得指定的对话框中具有指定ID的控件。CWnd::UpdateData:初始化对话框或获得对话框中的数据。CWnd::GetWindowRect:获得CWnd的屏幕坐标。CWnd::GetDC:获得客户区的设备环境。

CWnd::RedrawWindow:更新客户区中的指定矩形或区域。CWnd::UpdateWindow:更新客户区。

CWnd::Invalidate:使整个客户区无效。CWnd::ShowWindow:显示或隐藏窗口。

CWnd::ClientToScreen:将给定点或显示器上矩形的客户区坐标转换为屏幕坐标。

CWnd::ScreenToClient:将给定点或显示器上矩形的屏幕坐标转换为客户坐标。CWnd::SetWindowText:将窗口的文本或标题文字(如果有)设为指定的文本。CWnd::SetFont:设置当前字体。

CWnd::GetDlgItemInt:将给定对话框中控件的文本转换为整数。

CWnd::SetTimer:安装一个系统定时器,当它被激活时,发送一个WM_TIMER消息。

CWnd::KillTimer:销毁一个系统定时器。CWnd::FlashWindow:使窗口闪烁一次。CWnd::MessageBox:创建并显示一个窗口,其中包含了应用程序提供的消息和标题

第四篇:客户端学习总结

前面几个星期,我们学习了客户端的知识,其中主要有3个部分:xhtml,css,js。通过学习,我对客户端网页编程有了一个初步的了解,xhtml主要是页面内容的一个体现,是静态网页设计的基础,css用来控制页面的布局和网页的表现形式,javascript用于动态控制网页,以及对表单收集的数据进行客户端的验证。

xhtml和css是基础,这部分的内容不多也比较简单,学起来也比较轻松,主要是把其中概念要理解,而我们在实际编写网页时可以借助帮助手册,而且我们以后可能不会直接从事这方面的工作,所以现在只需要把基本的概念理解了就行了,以后在工作中能看懂代码就行。

javascript是我们客户端学习的重点,因为它也是一门编程语言,通过对它的学习,我们能掌握一些程序设计的技巧和思维。更为重要的是,它是一门面向对象的程序设计语言,它可以为我们以后学习java打下一个比较好的基础。我们以前学过的c语言是一种面向过程的语言,通过它的学习,我们对程序设计的一些思维有了初步的了解,知道了3种流程控制,而对javascript的学习,我们了解到了面向对象的一些基础知识,对象的概念等。

javascript也是我们这段时间学习的一个难点,由于以前没有面向对象程序设计的经验,这部分刚开始学的时候学得不是很好,要背的知识点太多,一部分知识要我们学习了java后重新回来才完全理解,有很多新的英语单词需要记。幸好李老师给了我们一个中文手册,有时候记不住的地方可以查手册,提高了我们学习的效率。对这部分的学习,感觉要从总体上来把握学习的知识点,不要抓住细节不放,如果能够将自己的思维提高到一个新的高度再回过头来看细节就比较轻松了。

javascript是一种弱类型的语言,它的特点是一个变量可以被赋值为多种类型的数据,我们在声明变量的时候不用声明它的类型,因为我们并不关心它的具体类型,这也是为什么在javascript中没有类这个概念的原因。类本身是一种复合的数据类型,对象才是具体的变量,在javascript中,任何一个变量可以被赋予任何类型的数据,我们对变量的类型并不关心,因此也没有类的概念。

消防支队开展先进性教育集中学习总结

党员先进性教育活动学习小结

科学发展观活动学习调研阶段总结

在javascript的后面几章,我们着重学习了对象模型,重点是标准文档对象模型dom和传统对象模型,以及浏览器对象模型,这部分的内容,主要是要记得多,知道每个对象都有什么属性和方法,最后我们总结了表单的验证,只要前面的内容都弄懂了,这部分学习起来就没有问题。

通过这2个多星期的学习,我对客户端网页编程有了一定的了解,已经进入java的学习了,这才是我们学习的重点,要更加的努力才行。

第五篇:[推荐]加工中心编程技巧小结

[推荐]加工中心编程技巧小结

一般编程技巧

cnc加工中心中几组常用指令的区别及编程技巧

随着科技的发展和社会的进步,人们对产品的性能和质量要求越来越高,从而使数控机床

用已得到一定程度的普及,而高性能高效率的加工中心也逐渐成为社会所需。通过几年的加

中心实际应用和教学实践及摸索,笔者将自己的体会和经验总结出来,希望对广大读者有所

启 迪。1. 暂停指令

G04X(U)_/P_ 是指刀具暂停时间(进给停止,主轴不停止),地址P或X后的数值是暂

停时

间。X后面的数值要带小数点,否则以此数值的千分之一计算,以秒(s)为单位,P后面数

不能带小数点(即整数表示),以毫秒(ms)为单位。例如,G04 X2.0;或G04 X2000;

暂停2秒

G04 P2000;但在某些孔系加工指令中(如G82、G88及G89),为了保证孔底的精糙度,当刀具加工至

孔底

时需有暂停时间,此时只能用地址P表示,若用地址X表示,则控制系统认为X是X轴坐标

值进行 执行。

例如,G82X100.0Y100.0Z-20.0R5.0F200P2000;钻孔(100.0,100.0)至孔底暂停2秒 G82X100.0Y100.0Z-20.0R5.0F200X2.0;

钻孔(2.0,100.0)至孔底不会暂停。

2. M00、M01、M02和M30的区别与联系

M00为程序无条件暂停指令。程序执行到此进给停止,主轴停转。重新启动程序,必须先回? 絁OG状态下,按下CW(主轴正转)启动主轴,接着返回AUTO状态下,按下START键才能

启动程序。

M01为程序选择性暂停指令。程序执行前必须打开控制面板上OP STOP键才能执行,执行

后的

效果与M00相同,要重新启动程序同上。M00和M01常常用于加工中途工件尺寸的检验或排屑。M02为主程序结束指令。执行到此指令,进给停止,主轴停止,冷却液关闭。但程序光标停

在 程序末尾。

M30为主程序结束指令。功能同M02,不同之处是,光标返回程序头位置,不管M30后是否

还有 其他程序段。3. 地址D、H的意义相同

刀具补偿参数D、H具有相同的功能,可以任意互换,它们都表示数控系统中补偿寄存器的地

址名称,但具体补偿值是多少,关键是由它们后面的补偿号地址来决定。不过在加工中心

中,为了防止出错,一般人为规定H为刀具长度补偿地址,补偿号从1~20号,D为刀具半径补

偿地

址,补偿号从21号开始(20把刀的刀库)。

例如,G00G43H1Z100.0;

G01G41D21X20.0Y35.0F200;

4. 镜像指令

镜像加工指令M21、M22、M23。当只对X轴或Y轴进行镜像时,切削时的走刀顺序(顺铣与

逆铣),刀补方向,圆弧插补转向都会与实际程序相反,如图1所示。当同时对X轴和Y轴进行

镜像

时,走刀顺序,刀补方向,圆弧插补转向均不变。

注意:使用镜像指令后必须用M23进行取消,以免影响后面的程序。在G90模式下,使用镜

或取消指令,都要回到工件坐标系原点才能使用。否则,数控系统无法计算后面的运动轨

迹,会出现乱走刀现象。这时必须实行手动原点复归操作予以解决。主轴转向不随着镜像指令变

化。

图1 镜像时刀补、顺逆变化

5. 圆弧插补指令

G02为顺时针插补,G03为逆时针插补,在XY平面中,格式如下:G02/G03X_Y_I_K_F_或

G02/G 03 X_Y_R_F_,其中X、Y为圆弧终点坐标,I、J为圆弧起点到圆心在X、Y轴上的增量值,R为圆

弧半径,F为进给量。在圆弧切削时注意,q≤180°,R为正值;q>180°,R为负值;I、K的指定也可用R指定,当

两者同时被指定时,R指令优先,I、K无效;R不能做整圆切削,整圆切削只能用I、J、K

编程,因为经过同一点,半径相同的圆有无数个,如图2所示。

图2 经过同一点的圆

当有I、K为零时,就可以省略;无论G90还是G91方式,I、J、K都按相对坐标编程;圆

弧插补

时,不能用刀补指令G41/G42。6. G92与G54~G59之间的优缺点

G54~G59是在加工前设定好的坐标系,而G92是在程序中设定的坐标系,用了G54~G59就

没有

必要再使用G92,否则G54~G59会被替换,应当避免,如表1所示。

表1 G92与工作坐标系的区别

注意:(1)一旦使用了G92设定坐标系,再使用G54~G59不起任何作用,除非断电重新启

系统,或接着用G92设定所需新的工件坐标系。(2)使用G92的程序结束后,若机床没有

回? 紾92设定的原点,就再次启动此程序,机床当前所在位置就成为新的工件坐标原点,易发

生事

故。所以,希望广大读者慎用。

7. 编制换刀子程序。

在加工中心上,换刀是不可避免的。但机床出厂时都有一个固定的换刀点,不在换刀位置,便不能够换刀,而且换刀前,刀补和循环都必须取消掉,主轴停止,冷却液关闭。条件繁多,如果每次手动换刀前,都要保证这些条件,不但易出错而且效率低,因此我们可以编制一个

刀程序保存谙低衬诖婺冢诨坏妒保贛DI状态下用M98调用就可以一次性完成换刀动

作。

以PMC-10V20加工中心为例,程序如下:

O2002;

(程序名)G80G40G49;(取消固定循环、刀补)

M05;

(主轴停止)M09;

(冷却液关闭)G91G30Z0;

(Z轴回到第二原点,即换刀点)

M06;

(换刀)

M99;

(子程序结束)在需要换刀的时候,只需在MDI状态下,键入“T5M98P2002”,即可换上所需刀具T5,从

而避

免了许多不必要的失误。广大读者可根据自己机床的特点,编制相应的换刀子程序。

8.其他

程序段顺序号,用地址N表示。一般数控装置本身存储器空间有限(64K),为了节省存储

间,程序段顺序号都省略不要。N只表示程序段标号,可以方便查找编辑程序,对加工过程

起任何作用,顺序号可以递增也可递减,也不要求数值有连续性。但在使用某些循环指令,跳

转指令,调用子程序及镜像指令时不可以省略。

9.同一条程序段中,相同指令(相同地址符)或同一组指令,后出现的起作用。

例如,换刀程序,T2M06T3;换上的是T3而不是T2;G01G00X50.0Y30.0F200;执行的是G00(虽有F值,但也不执行G01)。不是同一组的指令代码,在同一程序段中互换先后顺序执行效果相同。

G90G54G00X0Y0Z100.0;G00G90G54X0Y0Z100.0;以上各项均在PMC-10V20(FANUC SYSTEM)加工中心上运行通过。在实际应用中,只有深

刻理

解各种指令的用法和编程规律,

下载PB11.5+WEB客户端编程技巧总结(★)word格式文档
下载PB11.5+WEB客户端编程技巧总结(★).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    数控车床编程和改造技巧(5篇)

    数控车床编程和改造技巧 摘 要:随着科学技术的发展,普通机床越来越不能满足市场的需求,其劳动强度大,危险性高,且不能满足现代科学的批量生产需要,越来越多的企业将普通机床逐渐转......

    刀具和编程总结

    ① 白钢刀(即高速钢刀具)因其通体银白色而得名,主要用于直壁加工。白钢刀价格便宜,但切削寿命短、吃刀量小、进给速度低、加工效率低,在数控加工中较少使用。 ② 飞刀(即镶嵌式刀......

    编程题总结(范文大全)

    C作业汇总 1. short a,b=32767; /*short类型在内存中占2B*/ a=b+1; 问:a的值是多少?并分析原因。 2. 有一4位数整数,假设用abcd表示,请把这个4位数的每个数位用表达式表示出来......

    数据库编程总结(推荐)

    数据库编程总结 当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS A......

    一点Duilib编程总结

    一点Duilib编程总结 1.duilib简介 duilib是一个开源的DirectUI界面库,简洁但是功能强大。而且还是BSD的license,所以即便是在商业上,大家也可以安心使用。 现在大家可以从这个......

    Mudos编程总结[推荐]

    Mudos编程总结1,Mudos系统调用系统 MudLib系统文件 的过程和一些特点Mudos启动以后先要寻找一个配置文件,用来配置MudLib文件系统的一些信息(这里时config.cfg),找不到就无法启......

    描述性编程总结(范文)

    一、描述性编程 1、 QTP的运行原理 封装被测对象(TO)到对象仓库 对比对象仓库里的对象属性(TO)和运行时的真实被测对象的属性(RO) 对比一致后,找得到相应的对象(RO),按照脚本......

    编程题总结

    大家必须掌握每种类型的1-3题。题号考点要求48、 将两个两位数的整数合并成一个整数 65、 两个正整数合并成一个整数 71、 两个正整数合并成一个整数 77、 两个正整数合并成......