前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

PowerBuilder | 道道网 道道网 道可道,非常道。名可名,非常名,道法自然 http://www.daodao123.cn 健康之道 编程之道 网络之道 人生之道 国学有道 免费之道 自然之道 处世之道 生财有道 oracle 关于道道网 Category Archives: PowerBuilder PowerBuilder使用交流 PowerBuilder PB函数大全 2012 年 3 月 27 日 &#8211; 上午 1:49 ?Abs() 功能计算绝对值。 语法Abs ( n ) 参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值。如果参数n的值为NULL,Abs()函数返回NULL。 ?Ceiling() 功能返回大于n的最小整数。 语法Ceiling ( n ) 参数n:数值型变量或表达式返回值返回值的数据类型与n的数据类型相同。函数执行成功时返回大于n的最小整数。如果参数n的值为NULL,Ceiling()函数返回NULL。 ?Cos() 功能计算余弦,其中参数以弧度为单位。 语法Cos ( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n的余弦。如果参数n的值为NULL,Cos()函数返回NULL。 ?Exp() 功能计算e的n次方。 语法Exp ( n ) 参数n:指定幂值返回值Double。函数执行成功时返回e(约等于2.71828)的n次方。如果参数n的值为NULL,Exp()函数返回NULL。 ?Fact() 功能计算n的阶乘。 语法Fact ( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n的阶乘。如果参数n的值为NULL,Fact()函数返回NULL。 ?Int() 功能得到小于等于n的最大整数。 语法Int ( n ) 参数n:数值型变量或表达式返回值Integer。函数执行成功时返回小于等于n的最大整数。如果n的值太小或太大,超过了整数的表示范围,则函数返回0。如果参数n的值为NULL,Int()函数返回NULL。 ?Log() 功能计算n的自然对数。 语法Log ( n ) 参数n:数值型变量或表达式,其值必须大于0返回值Double。函数执行成功时返回n的自然对数。如果n小于等于0,将导致运行错误。如果参数n的值为NULL,Log()函数返回NULL。 ?LogTen() 功能计算n的常用对数(以10为底)。 语法LogTen ( n ) 参数n:数值型变量或表达式,其值必须大于0返回值Double。函数执行成功时返回n的常用对数。如果n小于等于0,将导致运行错误。如果参数n的值为NULL,LogTen()函数返回NULL。 ?Max() 功能求两个数中的最大值。 语法Max ( x, y ) 参数x:数值型变量或表达式,参加比较的第一个数y :数值型变量或表达式,参加比较的第二个数返回值以x、y中数据类型更精确的数据类型作为该函数的返回值数据类型。函数执行成功时返回参数比较的两个数中更大者。如果任何参数的值为NULL,Max()函数返回NULL。 ?Min() 功能求两个数中的最小值。 语法Min( x, y ) 参数x:数值型变量或表达式,参加比较的第一个数y :数值型变量或表达式,参加比较的第二个数返回值以x、y中数据类型更精确的数据类型作为该函数的返回值数据类型。函数执行成功时返回参数比较的两个数中较小者。如果任何参数的值为NULL,Min()函数返回NULL。 ?Mod() 功能求余数。 语法Mod ( x, y ) 参数x:数值型变量或表达式,被除数y :数值型变量或表达式,除数返回值以x、y中数据类型更精确的数据类型作为该函数的返回值数据类型。函数执行成功时返回x除以y所得的余数 。如果任何参数的值为NULL,Mod()函数返回NULL。 ?Pi() 功能计算n与Pi(3.14159265358979323&#8230;)的乘积。 语法Pi ( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n与Pi(3.14159265358979323&#8230;)的乘积。发生错误时返回-1。如果参数n的值为NULL,Pi()函数返回NULL。 ?Rand() 功能得到1与n之间的一个伪随机数。 语法Rand ( n ) 参数n:数值型变量或表达式,指定要产生的伪随机数的上界。有效值在1到32,767之间返回值与n的数据类型相同。函数执行成功时返回1与n之间的一个伪随机数,包括1和n在内。如果参数n的值为NULL,Rand()函数返回NULL。 Randomize() 功能初始化伪随机数发生器,这样让应用程序每次使用不同的伪随机数序列。 语法Randomize ( n ) 参数n:数值型变量或表达式,指定伪随机数生成器使用的起始值,不同的起始值可以生成不同的伪随机数序列。当n的值为0时,该函数把系统时钟作为伪随机数生成器的起始值,这样可以生成不可重复的伪随机数序列。当n的值不为0时,可以产生不同的伪随机数序列,但是,如果两次使用相同的伪随机数生成器起始值,那么两次生成的伪随机数序列相同。n的值在0到32,767之间返回值Integer。极少使用该函数的返回值。 Round() 功能将x四舍五入到n位。 语法Round ( x, n )参数x:要四舍五入的数值型数据n:整数类型,指定从哪个小数位上四舍五入x。有效值在0到18之间返回值Decimal。函数执行成功时返回将x四舍五入到小数点后第n位的数值,如果函数执行失败或任何参数的值为NULL,Round()函数返回NULL。 Sign() 功能确定n是整数、负数还是零。 语法Sign ( n ) 参数n:数值型变量或表达式,指定要测试符号的值返回值Integer。当n大于0时返回1;当n小于0时返回-1;当n等于0时返回0。如果参数n的值为NULL,Sign()函数返回NULL。 Sin() 功能计算正弦,其中参数以弧度为单位。 语法Sin( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n的正弦。如果参数n的值为NULL,Sin()函数返回NULL。 Sqrt() 功能计算平方根。 语法Sqrt ( n ) 参数n:数值型变量或表达式,指定要计算平方根的数据返回值Double。函数执行成功时返回n的平方根。如果n是负数,则执行该函数时引发运行错误。如果参数n的值为NULL,Sqrt()函数返回NULL。 Tan() 功能计算正切,其中参数以弧度为单位。 语法Tan( n ) 参数n:数值型变量或表达式返回值Double。函数执行成功时返回n的正切。如果参数n的值为NULL,Tan()函数返回NULL。 ?Truncate() 功能截断数值到指定的小数位。 语法Truncate ( x, n ) 参数x:要截断的数值型数据n:整数类型,指定从哪个小数位上截断x。有效值在0到18之间返回值Decimal。函数执行成功时返回将x截断到小数点后第n位的数值,如果函数执行失败或任何参数的值为NULL,Truncate()函数返回NULL。所谓截断就是舍弃指定位之后的数值。   Asc() 功能得到字符串第一个字符的ASCII码整数值。 语法Asc ( string ) 参数string:要得到第一个字符ASCII值的字符串返回值Integer。函数执行成功时返回string参数第一个字符的ASCII值,如果string参数的值为NULL,则Asc()函数返回NULL。 Char() 功能将字符串的第一个字符、Blob变量的第一个值、或一个整数转换成字符。 语法Char ( n ) 参数n:字符串、Blob变量或整数,也可以是包含上述类型数据的Any类型变量返回值Char。返回参数n的第一个字符。如果n参数的值为NULL,则Char()函数返回NULL。 Dec() 功能将字符串或Blob值转换成Decimal类型的值。 语法Dec ( stringorblob ) 参数stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为Decimal类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量返回值Decimal。函数执行成功时返回相应的Decimal类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Dec()函数返回0。如果stringorblob参数的值为NULL,则Dec()函数返回NULL。 Double() 功能将字符串或Blob值转换成Double类型的值。 语法Double(stringorblob) 参数stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为Double类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量返回值Double。函数执行成功时返回相应的Double类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Double()函数返回0。如果stringorblob参数的值为NULL,则Double()函数返回NULL。 Integer() 功能 将字符串或Blob值转换成Integer类型的值。 语法Integer ( stringorblob ) 参数stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为Integer类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量返回值Integer。函数执行成功时返回相应的Integer类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Integer()函数返回0。如果stringorblob参数的值为NULL,则Integer()函数返回NULL。 Long() 功能将其它类型的数据转换为Long类型的值。该函数有两种语法格式: 语法一、将两个无符号整数组合成一个长整数值; 语法二、将字符串或Blob值转换成Long类型的值。下面分别予以介绍: 语法一、将两个无符号整数组合成一个长整数值 语法Long ( lowword, highword ) 参数lowword:UnsignedInteger类型,指定长整数中的低位值highword:UnsignedInteger类型,指定长整数中的高位值返回值Long。函数执行成功时返回由低位值和高位值组合后的长整数值,发生错误时返回-1。如果任何参数的值为NULL,则Long()函数返回NULL。 语法二、将字符串或Blob值转换成Long类型的值 语法Long ( stringorblob ) 参数stringorblob:string类型变量或Blob类型变量。Blob类型变量时,把该变量第一个值转换为Long类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量返回值Long。函数执行成功时返回相应的Long类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Long()函数返回0。如果stringorblob参数的值为NULL,则Long()函数返回NULL。 Real() 功能将字符串或Blob值转换成Real类型的值。 语法Real ( stringorblob ) 参数stringorblob:string类型变量或Blob类型变量。当该参数是Blob类型变量时,把该变量第一个值转换为Real类型的值,其余部分被忽略。stringorblob参数也可以是包含上述类型数据的Any类型变量返回值Real。函数执行成功时返回相应的Real类型值。如果stringorblob参数中的值不是有效的PowerScript数字或数据类型不兼容,那么Real()函数返回0。如果stringorblob参数的值为NULL,则Real()函数返回NULL。 Date()功能 将其它类型的数据转换为Date类型的数据。该函数有三种语法格式: 语法一、将DateTime类型或第一个值是DateTime或Date的Blob值转换成Date类型的值; 语法二、将其值是个有效日期的字符串转换成Date类型的值; 语法三、将三个整数组合成一个日期。下面分别予以介绍: 语法一、将DateTime类型或第一个值是DateTime或Date的Blob值转换成Date类型的值 语法Date ( datetime ) 参数datetime:DateTime类型的值或第一个值是DateTime或Date的Blob类型的值。当该参数是Blob类型变量时,把该变量第一个值转换为Date类型的值,其余部分被忽略。datetime参数也可以是包含上述类型数据的Any类型变量返回值Date。函数执行成功时返回相应的Date类型值。如果datetime参数中的值不是有效的PowerScript日期或数据类型不兼容,那么Date()函数返回1900-01-01。如果datetime参数的值为NULL,则Date()函数返回NULL。 语法二、将其值是个有效日期的字符串转换成Date类型的值 语法Date ( string ) 参数string:string类型,其值包括一个有效的以字符串形式表示的日期(比如January 1, 1998或12-31-99),string参数也可以是包含字符串类型数据的Any类型变量返回值Date。函数执行成功时返回相应的Date类型值。如果string参数中的值不是有效的PowerScript日期或数据类型不兼容,那么Date()函数返回1900-01-01。如果string参数的值为NULL,则Date()函数返回NULL。 语法三、将三个表示年、月、日的整数组合成一个日期 语法Date ( year, month, day ) 参数year:integer类型,指定日期中的年份,用四位数字表示,从0到9999month:integer类型,指定日期中的月份,用一位或两位数字表示,从1到12day:integer类型,指定日期中的号数,用一位或两位数字表示,从1到31返回值Date。函数执行成功时返回由year、month、day三个参数确定的日期。如果这三个参数中任何一个参数使用了无效值(比如月份指定为14),则Date()函数返回1900-01-01。如果任何参数的值为NULL,则Date()函数返回NULL。 DateTime() 功能 将其它类型的数据转换为DateTime类型的数据。该函数有两种语法格式:语法一、把日期和时间值组合成DateTime类型的值;语法二、将Blob类型的值转换成DateTime类型的值。下面分别予以介绍: 语法一、把日期和时间值组合成DateTime类型的值 语法DateTime ( date {, time } ) 参数date:Date类型的日期值time:可选参数,Time类型的时间值,省略该参数时,PowerBuilder把时间设置为午夜(00:00:00.000000)。当指定该参数时,可以仅仅指定小时值返回值DateTime。函数执行成功时返回日期和时间组合而成的DateTime类型的值。如果任何参数的值为NULL,则DateTime()函数返回NULL。 语法二、将Blob类型的值转换成DateTime类型的值 语法DateTime ( blob ) 参数blob:Blob类型变量,把该变量第一个值转换为DateTime类型的值,其余部分被忽略。blob参数也可以是包含blob类型数据的Any类型变量返回值DateTime。函数执行成功时返回相应的DateTime类型值。如果blob参数的值为NULL,则DateTime()函数返回NULL。 IsDate() 功能检测指定的字符串是否包含有效的日期。 语法IsDate ( datevalue ) 参数datevalue:string类型,指定要检测的字符串返回值Boolean。如果datevalue包含了有效的日期,则IsDate()函数返回TRUE,否则返回FALSE。如果datevalue参数的值为NULL,则IsDate()函数返回NULL。 IsNull() 功能测试变量或表达式的值是否是NULL。 语法IsNull ( any ) 参数any:要测试的变量或表达式返回值Boolean:如果any的值为NULL,函数返回TRUE,否则函数返回FALSE。 IsNumber() 功能测试字符串是否是有效的数值。 语法IsNumber ( string ) 参数string:string类型,要测试的字符串返回值Boolean:如果string的值为有效的PowerScript数字,函数返回TRUE,否则函数返回FALSE。如果string参数的值为NULL,则IsNumber()函数返回NULL。 IsTime() 功能测试字符串的值是否是有效的时间。 语法IsTime ( timevalue ) 参数timevalue:string类型,要测试的字符串返回值Boolean:如果timevalue的值为有效的时间,函数返回TRUE,否则函数返回FALSE。如果timevalue 参数的值为NULL,则IsTime()函数返回NULL。 String() 功能按指定格式将数据转换成字符串。String()可以把Date、DateTime、数值类型、Time、String类型的数据转换成指定格式的字符串。 语法String(data,{format}) 参数data:指定要转换格式的数据,其数据类型可以是Date、DateTime、数值类型、Time、String,也可以是包含上述类型数据的Any类型变量format:可选项,string类型,其值指定数据格式。如果data参数的类型为string,则必须指定format参数返回值String。函数执行成功时返回以字符串方式表示的指定数据,如果data参数的数据类型与format参数指定的格式不匹配、format参数指定的格式无效、或data参数不是前面提到的适宜数据类型时,String()函数返回空字符串(&#8221;")。 用法: format是个用掩码表示的字符串,对data参数为数值类型的情况来说,格式为:正数格式;负数格式;零的显示格式;空的显示格式除第一部分必须提供外,其它部分可以省略。数值型显示格式中使用两个掩码字符:#和0,其中,使用#代表0~9之间的任意数字,0代表每个零都要显示。另外,货币符号($或¥)、百分号(%)、小数点(.)、逗号(,)等字符也可以出现在格式字符串中,但是,除小数点(.)、逗号(,)能够出现在格式字符#和0之间外,其它字符只能放置在格式串的前面或后面,例如,###,###$###是个错误的格式串,¥###,###,###是个正确的格式串。省略format参数时,String()函数使用PowerBuilder缺省格式。注意,如果显示格式有多个部分,各部分之间的分号(;)不能省略。其它字符也可以出现在显示格式字符串中(只能放在格式串的开头和末尾),但它们没有特殊意义,系统只是照原样显示。例如,用显示格式字符串“收入##”格式化数值12时,显示结果为“收入12”。对data参数为字符串(String)类型的情况来说,format参数的语法格式为:正常字符串格式;空值时格式在“正常字符串格式”中,@代表字符串中的任意字符,除此之外的任何字符照原样显示,例如,如果定义了下面的格式:(@@)@@@@-@@@@则字符串0166767593显示为:(01)6676-7593对data参数为日期(Date)类型的情况来说,format参数的语法格式为:正常日期格式;日期为空值时的格式日期格式中格式字符意义如下:d棗开头不带0的日数(如8)dd棗开头带0的日数(如08)ddd棗星期的英文缩写(如Mon、Tue)dddd棗星期的英文全称(如Monday、Tuesday)m棗开头不带0的月份(如8)mm棗开头带0的月份(如08)mmm棗月份的英文缩写(如Jan、Feb)mmmm棗月份的英文全称(如January、February)yy棗两位数字表示的年份(如97)yyyy棗四位数字表示的年份(如1997)另外,还可以使用下面的关键字作为日期的显示格式:[General] Windows系统中定义的短日期格式[LongDate] Windows系统中定义的长日期格式[ShortDate] Windows系统中定义的短日期格式对data参数为时间(Time)类型的情况来说,语法格式为:正常时间格式;时间为空值时的格式时间格式中格式字符意义如下:h开头不带0的小时(比如6)hh棗开头带0的小时(比如06)m棗开头不带0的分钟(比如6)mm棗开头带0的分钟(比如06)s棗开头不带0的秒(比如6)ss棗开头带0的秒(比如06)f棗开头不带0的微秒,可以指定1~6个f,每个f代表一部分微秒AM/PM棗用AM/PM显示上、下午时间,12小时制am/pm棗用am/pm显示上、下午时间,12小时制A/P棗用A/P显示上、下午时间,12小时制a/p棗用a/p显示上、下午时间,12小时制另外,显示格式中还可以使用关键字[Time],它表示按当前Windows系统定义的格式显示时间。对data参数为日期时间(DateTime)类型的情况来说,语法格式为:正常日期时间格式;日期时间为空值时的格式日期时间类型使用的掩码就是把日期掩码和时间掩码结合起来即可。 ?Time() 功能 把其它类型的数据转换为Time类型的值。该函数有三种语法格式:语法一、将DateTime类型或第一个值是DateTime或Time的Blob值转换成Time类型的值;语法二、将其值是个有效时间的字符串转换成Time类型的值;语法三、将表示时、分、秒、以及微秒的整数组合成一个时间值。下面分别予以介绍: 语法一、将DateTime类型或第一个值是DateTime或Time的Blob值转换成Time类型的值 语法Time ( datetime ) 参数datetime:DateTime类型的值或第一个值是DateTime或Time的Blob类型的值。当该参数是Blob类型变量时,把该变量第一个值转换为Time类型的值,其余部分被忽略。datetime参数也可以是包含上述类型数据的Any类型变量返回值Time。函数执行成功时返回相应的Time类型值。如果datetime参数中的值不是有效的PowerScript时间或数据类型不兼容,那么Time()函数返回00:00:00.000000。如果datetime参数的值为NULL,则Time()函数返回NULL。 语法二、将其值是个有效时间的字符串转换成Time类型的值 语法Time ( string ) 参数string:string类型,其值包括一个有效的以字符串形式表示的时间(比如9am或10:25),string参数也可以是包含时间类型数据的Any类型变量返回值Time。函数执行成功时返回相应的Time类型值。如果string参数中的值不是有效的PowerScript时间或数据类型不兼容,那么Time()函数返回00:00:00.000000。如果string参数的值为NULL,则Time()函数返回NULL。 语法三、将表示时、分、秒、以及微秒的整数组合成一个时间值 语法Time ( hour, minute, second {, microsecond } ) 参数hour:integer类型,指定时间中的小时,从0到23minute:integer类型,指定时间中的分钟,从0到59second:integer类型,指定时间中的秒,从0到59microsecond:integer类型,可选项,指定时间中的微秒,从0到32767返回值Time。函数执行成功时返回由hour、minute、second、microsecond 四个参数确定的时间。如果这四个参数中任何一个参数使用了无效值(比如小时指定为44),则Time()函数返回NULL。 Beep() 功能响铃n次(n超过10时只响10次)。 语法Beep ( n ) 参数n:数值类型,指定需要的响铃次数。如果n的值大于10,那么计算机只响铃10次返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数n的值为NULL,Beep()函数返回NULL。 ClassName() 功能确定指定变量的类(数据类型)。 语法ClassName(variable) 参数variable:指定要确定其数据类型的变量返回值String。函数执行成功时返回指定变量的数据类型,发生错误时返回空字符串。如果参数variable的值为NULL,ClassName()函数返回NULL。用法需要注意的是,ClassName()函数不能确定枚举类型变量的类型,此时,ClassName()函数返回空字符串(&#8221;")。 DebugBreak() 功能暂停程序执行,打开调试器,进入调试模式。 语法DebugBreak ( ) 返回值无用法 DebugBreak()函数可以帮助你调试应用程序。如果你希望应用程序执行某条语句后暂停执行,然后进入调试模式,那么可以在该语句后面放上DebugBreak()函数,应用程序执行到DebugBreak()函数后,打开Debug(调试)窗口,并在其中显示当前上下文信息。这种方式实现了应用程序在PowerBuilder开发环境中的即时调试功能。 IntHigh() 功能得到Long型值的高位字。 语法IntHigh ( long ) 参数long:long型值或变量返回值 Integer。函数执行成功时返回参数long的高位字,发生错误时返回-1。如果参数long的值为NULL,IntHigh()函数返回NULL。用法IntHigh()函数通常用于分解外部C或C++语言函数的返回值和Windows消息。 IntLow() 功能得到Long型值的低位字。 语法IntLow ( long ) 参数long:long型值或变量返回值Integer。函数执行成功时返回参数long的低位字,发生错误时返回-1。如果参数long的值为NULL,IntLow()函数返回NULL。用法IntLow()函数通常用于分解外部C或C++语言函数的返回值和Windows消息。示例请参看IntHigh()函数。 IsValid() 功能检查对象变量是否已经实例化,即实例变量的值是否是个有效的对象句柄。 语法IsValid ( objectname ) 参数objectname:要检测的对象名返回值Boolean。如果指定对象已经创建了对象实例,那么IsValid()函数返回TRUE,否则返回FALSE。如果参数objectname的值为NULL,IsValid()函数返回NULL。 KeyDown() 功能检查用户是否按了键盘上指定的键。 语法KeyDown ( keycode ) 参数 keycode:KeyCode枚举类型或integer类型,指明要检测的按键或某个键的ASCII值返回值Boolean。如果用户按了keycode参数指定的按键,函数返回TRUE,否则返回FALSE。如果参数keycode的值为NULL,KeyDown()函数返回NULL。用法KeyDown()函数通常在某个事件的事件处理程序中调用,它并不指明用户键入了哪个字符,而是说明当前事件(即事件处理程序中调用KeyDown()函数的事件)发生时用户正按着哪个按键。一般来说,应用程序在窗口的Key事件或控件的按键事件中调用KeyDown()函数,以检测用户是否按了某个特殊键。对控件来说,PowerBuilder没有定义预定义的Key事件,这也没有关系,如果在控件得到焦点后希望应用程序检测用户的按键,只要对该控件定义一个用户事件,并把pbm_keydown (其它控件)或pbm_dwnkey(数据窗口控件)映射到该用户事件上即可。 MessageBox() 功能显示一个消息对话框。 语法MessageBox(title,text{,icon{,button{,default}}}) 参数title:string类型,指定消息对话框的标题text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值icon:Icon枚举类型,可选项,指定要在该对话框左侧显示的图标button:Button枚举类型,可选项,指定显示在该对话框底部的按钮default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号自左向右依次计数,缺省值为1,如果该参数指定的编号超过了显示的按钮个数,那么MessageBox()函数将使用缺省值返回值Integer。函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生错误时返回-1。如果任何参数的值为NULL,MessageBox()函数返回NULL。 用法当你的应用程序需要显示一段简短信息(比如显示出错、警告等信息)时,没有必要自己从头创建窗口、安排控件,使用MessageBox()函数既简单又方便。用户只有响应该窗口后,程序才能继续运行下去。MessageBox()函数的icon参数指定显示在窗口中的图标,它是枚举类型,可能取值为:取值 图标Information! StopSign! Exclamation! Question! None! 无图标其中Information!是Icon参数的缺省值。Button参数指定在窗口中显示哪些按钮,有效取值为:取值中文Windows 95下显示OK!“确定”按钮OKCancel!“确定”、“取消”按钮YesNo!“是”、“否”按钮 YesNoCancel!“是”、“否”、“取消”按钮RetryCancel!“重试”、“取消”按钮AbortRetryIgnore!“终止”、“重试”、“忽略”按钮 PixelsToUnits() 功能 将像素值转换为PowerBuilder单位PBU。 语法PixelsToUnits ( pixels, type ) 参数pixels:integer类型,指定要转换为PowerBuilder单位的像素数type:ConvertType枚举类型,指定按哪个方向进行转换。有效取值为:XPixelsToUnits! &#8211; 按水平方向转换像素;YPixelsToUnits! &#8211; 按垂直方向转换像素返回值Integer。函数执行成功时返回pixels参数指定像素数按指定方向转换成的PowerBuilder单位数,发生错误时返回-1。如果任何参数的值为NULL,PixelsToUnits()函数返回NULL。用法窗口中水平方向和垂直方向相同的像素数表示的距离并不相同。如果你使用水平方向和垂直方向相同的像素数绘制一个方框,那么你会看到,该方框不是正方形而是个矩形,而使用PBU计量的相同单位数将绘出正方形。因此,在进行单位转换时,需要指明按那么方向进行转换。 PopulateError() 功能以应用程序定制的错误号和错误信息填充Error对象,该函数不触发应用对象的SystemError事件。 语法PopulateError ( number, text ) 参数number:integer类型,指定要保存到Error对象number属性中的值text:string类型,指定要保存到Error对象text属性中的值返回值Integer。函数执行成功时返回1,发生错误时返回-1。 用法当应用程序需要根据变量的当前取值来定制Error对象时,可以使用PopulateError()函数来填充Error对象的number和text属性,同时该函数根据上下文自动填充Error对象的其它属性。定制了Error对象后,应用程序可以使用不带参数的SignalError()函数触发应用对象的SystemError事件。这样,在SystemError事件的事件处理程序中可以编写处理定制错误和系统错误的通用代码。如果应用程序没有对SystemError事件编写事件处理程序,那么SignalError()函数什么也不做。 RGB() 功能将代表红、绿、蓝三原色的三个整数组合成一个表示颜色的长整数。 语法RGB ( red, green, blue ) 参数red:integer类型,指定颜色中的红色分量强度,有效值在0到255之间green:integer类型,指定颜色中的绿色分量强度,有效值在0到255之间blue:integer类型,指定颜色中的蓝色分量强度,有效值在0到255之间返回值Long。函数执行成功时返回由指定分量确定的颜色,用长整数表示。发生错误时返回-1。如果任何参数的值为NULL,RGB()函数返回NULL。 用法RGB()函数使用下述公式计算表示颜色的长整数:65536 * Blue+ 256 * Green+ Red其中,Blue代表蓝色分量,Green代表绿色分量,Red代表红色分量。各分量中,数值越小,亮度越低,数值越大,亮度越高。例如,RGB ( 0, 0, 0 )为黑色(亮度最低),RGB ( 255, 255,255 )为白色(亮度最高)。 SetNull() 功能将指定变量的值设置为NULL。这里的变量可以是除数组、结构、自动实例化对象之外的任何数据类型。 语法SetNull ( anyvariable ) 参数anyvariable:要将其值设置为NULL的变量返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,SetNull()函数返回NULL。用法PowerBuilder应用程序在说明变量时,并不自动地将其初值设置为NULL,而是根据类型的不同而设置不同的初值,比如,数值类型的变量自动初始化为0,字符串型变量自动初始化为空字符串(&#8221;")。因此,如果需要将某个变量的值设置为NULL,就需要使用SetNull()函数来完成任务了。一般来说,NULL值往往应用在数据库值未确定的列上。 SetPointer() 功能设置鼠标指针。 语法SetPointer ( type ) 参数type:Pointer枚举类型,指明要设置为哪种鼠标指针返回值Pointer。返回更换前的鼠标指针,以便于应用程序恢复原有指针。如果参数type的值为NULL,SetPointer()函数返回NULL。用法type参数的可能取值为:Arrow!、Cross!、Beam!、HourGlass!、SizeNS!、SizeNESW!、SizeWE!、SizeNWSE!、UpArrow!。 SignalError() 功能以编程方式触发应用对象的SystemError事件。 语法SignalError ( { number }, { text } ) 参数number:integer类型,可选项,指定出错编号,该编号将保存到Error对象的number属性中text:string类型,可选项,指定出错信息,该信息将保存到Error对象的text属性中返回值Integer。函数执行成功时返回1,发生错误时返回-1。用法SignalError()函数通常用于测试应用程序的出错处理代码,它以人工方式产生错误,以此模拟应用程序运行过程中可能出现的错误。我们知道,应用程序本身产生错误的条件往往不容易在测试时遇到。当应用程序使用PopulateError()函数定制了Error对象后,可以以不带参数的方式调用SignalError()函数,由该函数触发应用对象的SystemError事件。如果我们在调用SignalError()函数时指定了参数number和text,那么SignalError()函数将根据上下文填充Error对象的所有属性,然后触发应用对象的SystemError事件。如果应用程序没有对应用对象的SystemError事件编写事件处理程序,那么SignalError()函数什么也不做。 ?UnitsToPixels() 功能将PowerBuilder单位(PBU)转换为像素。 语法UnitsToPixels ( units, type ) 参数units:integer类型,指定要转换为像素的PowerBuilder单位(PBU)数type:ConvertType枚举类型,指定按哪个方向进行转换。有效取值为:XUnitsToPixels! &#8211; 按水平方向转换PBU;YUnitsToPixels! &#8211; 按垂直方向转换PBU返回值Integer。函数执行成功时返回units参数指定PBU数按指定方向转换成的像素数,发生错误时返回-1。如果任何参数的值为NULL,UnitsToPixels()函数返回NULL。用法窗口中水平方向和垂直方向相同的像素数表示的距离并不相同。如果你使用水平方向和垂直方向相同的像素数绘制一个方框,那么你会看到,该方框不是正方形而是个矩形,而使用PBU计量的相同单位数将绘出正方形。因此,在进行单位转换时,需要指明按那么方向进行转换。 Blob() Blob()功能将字符串转换成Blob类型数据。 语法Blob ( text ) 参数text: string类型,指定要转换的数据返回值Blob。函数执行成功时返回转换后的Blob类型数据;如果text参数的值为NULL,则Blob()函数返回NULL。 BlobEdit() 功能将任意类型的数据插入到Blob类型变量的指定位置。 语法BlobEdit ( blobvariable, n, data ) 参数blobvariable:Blob类型的已初始化变量,将向该变量中插入数据n:指定插入位置,有效值在1到4,294,967,295之间data:要插入到Blob类型变量中的数据,其数据类型可以是任何有效的PowerBuilder数据类型返回值Unsigned long。函数执行成功时返回下次可以插入数据的位置;如果blobvariable变量中空间不够或任何参数的值为NULL,则BlobEdit()函数返回NULL。 BlobMid() 功能从Blob变量中提取出一段数据。提取之后,原Blob变量内容不变。 语法BlobMid ( data, n {, length } ) 参数data:Blob类型的数据n:指定要提取数据的起始位置,有效值在1到4,294,967,295之间length:可选项,指定要提取数据的长度,以字节为单位,有效值在1到4,294,967,295之间。缺省时提取从指定位置n到末尾的所有数据返回值Blob。函数执行成功时返回指定字节数的数据。如果n的值大于data的字节数,函数返回空。如果n与length的和超过了data数据的字节数,那么BlobMid()函数返回剩下的数据,数据长度将小于参数length的值。如果任何参数的值为NULL,则BlobMid()函数返回NULL。 ?Len() 功能得到Blob类型变量的数据长度,以字节为单位。 语法Len ( blob ) 参数blob:Blob类型变量返回值Long。函数执行成功时返回blob变量的长度,发生错误时返回-1。如果任何参数的值为NULL,则Len()函数返回NULL。用法如果在说明Blob类型的变量时指定了变量长度,那么对该变量来说,Len()函数得到的就是这个指定的长度。如果在变量说明时未指定变量长度,那么PowerBuilder在赋值时调整长度,未赋值Blob类型变量的长度为0。 ?String() 功能将Blob类型变量的值转换成字符串类型。如果Blob类型变量的值不是文本型数据,String()函数将其值解释成字符。 语法String ( blob ) 参数blob:要对其值进行类型转换的Blob类型变量返回值String。函数执行成功时返回转换后的数据,失败时返回空字符串(&#8221;")。如果blob变量中包含的数据不是字符串类型的数据,那么String()函数尽可能把数据解释为字符,并返回字符串类型数据。如果blob参数的值为NULL,则String()函数返回NULL。 Clipboard() 功能提取或替换Windows系统剪贴板的文本内容。 语法Clipboard ( { string } ) 参数string:string类型,可选项,指定要复制到系统剪贴板上的文本。如果剪贴板上已有内容的话,该文本将取代剪贴板的当前内容返回值String。函数执行成功时,如果剪贴板上包含文本数据,那么函数返回剪贴板的当前内容;如果剪贴板上包含非文本数据(比如位图)或不包含任何数据,那么函数返回空字符串(&#8221;")。如果string参数的值为NULL,Clipboard()函数返回NULL。用法无论是否指定string参数,Clipboard()都将返回剪贴板的当前内容。当指定string参数时,剪贴板的原有内容被string参数的值取代;省略string参数时,仅仅得到剪贴板的内容。 CommandParm() 功能得到应用程序运行时指定的命令参数。 语法CommandParm ( ) 返回值String。函数执行成功时返回应用程序运行时的命令行参数,函数执行错误或没有命令行参数时函数返回空字符串(&#8221;")。用法命令行参数是应用程序启动时跟在应用程序名称后面的任何参数,比如,在运行窗口中输入了下述命令:MyAppl C:\EMPLOYEE\EMPLIST.TXT那么MyAppl应用程序中使用CommandParm()函数得到的命令行参数为:C:\EMPLOYEE\EMPLIST.TXT当应用程序的命令行中包含几个参数时,CommandParm()函数作为一个字符串返回所有参数。利用字符串操作函数可以分离各参数。在应用对象的Open事件中没有必要执行CommandParm()函数。此时,Open事件的argument参数中包含了命令行参数。 DoScript() 功能执行AppleScript程序段,该函数只在Macintosh平台上有效。 语法DoScript ( script, result ) 参数script:string类型,指定要运行的程序段(script)result:string类型,由AppleScript程序段返回的结果信息或出错信息返回值Integer。返回由AppleScript返回的结果代码。如果任何参数的值为NULL,DoScript()函数返回NULL。 GetApplication() 功能得到当前应用对象的句柄,这样你可以查询或设置应用对象的属性(通常用于编写通用代码)。 语法GetApplication ( ) 返回值Application。返回当前应用对象的句柄。 GetEnvironment() 功能得到操作系统、处理器、屏幕显示等与系统相关的信息。 语法GetEnvironment ( environmentinfo ) 参数environmentinfo:Environment对象名,用于保存系统环境信息返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数environmentinfo的值为NULL,GetEnvironment()函数返回NULL。用法当开发交叉平台项目时,利用GetEnvironment()函数,应用程序能够得到当前运行的操作系统、使用的CPU类型、操作系统的版本、屏幕的大小以及颜色数等信息,这些信息的具体表示请参阅本书环境对象(Environment Object)的介绍。 GetFocus() 功能确定当前焦点位于哪个控件上。 语法GetFocus ( ) 返回值GraphicObject。函数执行成功时返回当前得到焦点控件的引用,发生错误时返回无效引用。用法应用程序利用IsValid()函数可以检测GetFocus()是否返回有效的控件引用。同时,使用TypeOf()函数可以确定控件的类型。 Post() 功能将指定消息加入到某个窗口的消息队列中,这个窗口既可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。 语法Post( handle, messageno, word, long ) 参数handle:long类型,指定窗口的系统句柄,将向该窗口邮寄消息messageno:UnsignedInteger类型,指定要邮寄的消息号 word:long类型,指定与消息一起邮寄的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起邮寄的long型参数值或字符串返回值Boolean。如果任何参数的值为NULL,Post()函数返回NULL。 用法Post()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。这一点与Send()函数不同,Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Post()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。如果应用程序要邮寄PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用PostEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Post()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。 ProfileInt() 功能从初始化文件(.ini)中读取整型设置值。 语法ProfileInt ( filename, section, key, default ) 参数filename:string类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件section:string类型,指定要得到的值所在的节(Section)key:string类型,指定要得到的值的名称,不用区分大小写default:integer类型,当指定的文件、节名、项目名不存在或不能转换为整数时,函数返回该参数指定的值返回值Integer。函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;如果指定的文件、节名、项目名不存在或不能转换为整数时,函数返回default参数指定的缺省值。如果发生错误,函数返回-1。如果任何参数的值为NULL,ProfileInt()函数返回NULL。 ProfileString() 功能从初始化文件(.ini)中读取字符串型设置值。 语法ProfileString ( filename, section, key, default ) 参数filename:string类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件section:string类型,指定要得到的值所在的节(Section)key:string类型,指定要得到的值的名称,不用区分大小写default:string类型,当指定的文件、节名、项目名不存在时,函数返回该参数指定的值返回值String。函数执行成功时,在指定的文件、节名、项目名不存在任何错误的情况下,函数返回相应项的值;如果指定的文件、节名、项目名不存在,函数返回default参数指定的缺省值。如果发生错误,函数返回空字符串。如果任何参数的值为NULL,ProfileString()函数返回NULL。 Restart() 功能停止所有程序段的执行、关闭所有窗口、提交事务、断开与数据库的连接,然后重新启动应用程序。 语法Restart() 返回值Integer。函数执行成功时返回1,发生错误时返回-1。 Run() 功能运行指定的应用程序。 语法Run ( string {, windowstate } ) 参数string:string类型,指定要运行的应用程序的名称,其中可以包括路径以及相应的参数,就像在命令行中键入的那样windowstate:WindowState枚举类型,可选项,指定程序运行时的窗口状态。有效取值为:Maximized! &#8211; 最大化窗口;Minimized! &#8211; 最小化窗口;Normal! &#8211; 缺省值,正常窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,Run()函数返回NULL。 用法使用Run()函数,应用程序能够启动操作系统中的任何程序。当在Run()参数中指定了要启动应用程序的参数时,参数的意义、格式、个数等由具体的应用程序确定。如果在Run()函数的string参数中指定了文件名但没有给出扩展名时,PowerBuilder认为该文件的扩展名为.EXE。要运行扩展名不是.EXE的应用程序(比如.BAT, .COM, 或.PIF),必须在Run()函数的参数中指定文件的扩展名。 Send() 功能向窗口发送指定的消息并立即执行相应的事件处理程序。 语法Send( handle, messageno, word, long ) 参数handle:long类型,指定窗口的系统句柄,将向该窗口发送消息messageno:UnsignedInteger类型,指定要发送的消息号word:long类型,指定与消息一起发送的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起发送的long型参数值或字符串返回值Long。函数执行成功时返回Windows系统调用SendMessage()的返回值,发生错误时返回-1。如果任何参数的值为NULL,Send()函数返回NULL。 用法Send()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中,这一点与Post()函数不同,Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Send()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。实际上,Send()函数把它的各个参数直接传送给Windows的系统调用SendMessage()。在各种C++开发工具的WINDOWS.H文件中可以查到各消息编号。如果应用程序要发送PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用TriggerEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Send()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。 SetProfileString() 功能设置初始化文件中指定项的值。 语法SetProfileString ( filename, section, key, value ) 参数filename:string类型,指定初始化文件的名称,可以包括路径,省略路径时,该函数按操作系统的标准路径搜索指定文件section:string类型,指定要设置的值所在的节(Section)key:string类型,指定要设置的值的名称,不用区分大小写default:string类型,指定要设置项的值返回值Integer。函数执行成功时返回1,指定的文件未找到或指定的文件不能访问时函数返回-1。如果任何参数的值为NULL,SetProfileString()函数返回NULL。 ShowHelp() 功能显示应用程序帮助,该帮助使用Microsoft Windows帮助系统进行操作。 语法ShowHelp ( helpfile, helpcommand {, typeid } ) 参数helpfile:string类型,指定帮助文件的名称helpcommand:HelpCommand枚举类型,指定显示帮助的格式。有效取值为:Index! &#8211; 显示目录主题,使用该值时不要指定typeid参数;Keyword! &#8211; 转移到由指定关键字确定的主题;Topic! &#8211; 显示指定主题的帮助typeid:可选项,指定帮助主题返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,ShowHelp()函数返回NULL。 SignalError() 功能触发应用对象的SystemError事件,通常用于代码调试。 语法SignalError ( { number }, { text } ) 参数number:integer类型,可选项,其值将保存到Error对象的number属性中text:string类型,可选项,其值将保存到Error对象的text属性中返回值Integer。函数执行成功时返回1,发生错误时返回-1。 ?Yield() 功能将控制权转移给其它图形对象,包括非PowerBuilder对象。该函数检测消息队列,如果有消息,就把消息取出。利用该函数可以在执行耗时较长的操作时把控制权转让给其它应用。 语法Yield() 返回值Boolean。如果在消息队列中提取到了消息,那么函数返回TRUE,否则返回FALSE。用法正常情况下,PowerBuilder应用程序在执行一段代码(比如函数或事件处理程序)的过程中不响应用户的操作。对耗时短暂的代码段来说,这种处理方式没有什么不妥的地方,但是,如果某个代码段的执行耗时较长,应用程序又希望为用户提供更多的控制权,那么需要在这段代码中插入Yield()函数,让用户能够进行其它操作,特别在循环执行的代码中更应该如此。应用程序执行Yield()函数后,如果发现消息队列中存在消息,它将允许对象处理这些消息,处理之后,继续Yield()函数后面代码的执行。因此,代码中插入Yield()函数将降低应用程序的运行效率。 Close() 功能关闭窗口并释放窗口以及窗口上的控件所占据的内存。 语法Close(windowname) 参数windowname:要关闭窗口的名称返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数windowname的值为NULL,Close()函数返回NULL。 用法应用程序使用Open()或其它Open簇函数打开窗口后,不需要窗口时,可以使用Close()关闭窗口并释放窗口以及窗口上所有控件占据的内存。Close()函数的执行过程为:如果要关闭窗口的CloseQuery和/或Close事件已经编写了事件处理程序,那么执行这些事件处理程序,从屏幕上删除要关闭的窗口、关闭窗口、之后执行调用Close()函数语句后面的语句。当窗口被关闭后,应用程序就不能再访问已经关闭窗口的属性、实例变量、对象函数、以及窗口上的控件了。如果关闭窗口后应用程序依然访问上述特性,那么将引发运行错误。当然,应用程序也可以阻止窗口被关闭,方法很简单,只要在欲阻止关闭窗口的CloseQuery事件处理程序中使用RETURN语句返回1即可,格式为:RETURN1 CloseWithReturn() 功能关闭窗口并将返回值保存在Message对象中,该函数只能对响应窗口使用。 语法CloseWithReturn ( windowname, returnvalue) 参数windowname:要关闭窗口的名称returnvalue:指定关闭窗口时保存到Message对象中的值,调用CloseWithReturn()函数的代码段通过查看Message对象属性的值得到关闭窗口时被关闭窗口传递的值。returnvalue参数必须是下述三种类型之一:String、Numeric、PowerObject返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数任何的值为NULL,CloseWithReturn()函数返回NULL。 Open() 功能 打开窗口。该函数有两种语法格式: 语法一、打开编程时已知数据类型的窗口对象; 语法二、打开程序运行后才能确定数据类型的窗口对象。下面分别予以介绍: 语法一、打开编程时已知数据类型的窗口对象 语法Open ( windowvar {, parent } ) 参数windowvar:要打开窗口的窗口名,可以使用窗口画笔定义的窗口对象名,也可以使用该窗口对象的某个变量。Open()函数把打开窗口的引用放置到windowvar变量中parent:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,Open()函数返回NULL。 语法二、打开程序运行后才能确定数据类型的窗口对象 语法Open ( windowvar, windowtype {, parent } ) 参数windowvar:指定窗口变量名,Open()函数把打开窗口的引用放置到该变量中windowtype:string类型,指定要打开窗口的数据类型,该参数指定的窗口数据类型必须与windowvar参数的类型相同或是windowvar类型的后继对象parent:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,Open()函数返回NULL。 OpenSheet() 功能在MDI框架窗口中打开MDI子窗口,并在指定菜单中创建选择该子窗口的菜单项。 语法OpenSheet(sheetrefvar{,windowtype},mdiframe{,position{,arrangeopen}}) 参数sheetrefvar:指定要作为工作表打开的窗口名windowtype:string类型,可选项,指定要打开窗口的类型(也就是窗口画笔中保存的窗口对象名)mdiframe:指定要放置工作表的MDI框架窗口名position:可选参数,指定所打开的工作表的名称作为一个菜单项显示在第几个菜单标题下面,缺省时,被放在倒数第二个菜单标题下,原因是,大多数商业软件的最后两个菜单标题是Window和Help,把工作表的名称放到Window菜单标题中用于选择工作表窗口是个合情合理的选择arrangeopen:ArrangeOpen枚举类型,可选参数,但如果选用了此参数,那么position参数也必须同时指定。arrangeopen参数告诉系统如何显示打开的工作表返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数任何的值为NULL,OpenSheet()函数返回NULL。 用法arrangeopen参数的可能取值为:Cascaded!把一个工作表放在另一个的上面,每个都向右下方偏移一点,这样所有工作表的标题栏用户都能看到。该值是OpenSheet()函数的缺省选择。Layered!将工作表显示在客户区的左上角,并最大化工作表,使其充满MDI框架窗口的整个客户区。Original!操作动作与Cascaded!参数相同,只是不放大窗口,而以窗口定义时的大小显示。 OpenSheetWithParm() 功能 在MDI框架窗口中打开MDI子窗口,同时把参数保存在Message对象中进行传递。 语法OpenSheetWithParm(sheetrefvar,parameter{,windowtype},mdiframe{,position{,arrangeopen}} 参数sheetrefvar:指定要作为工作表打开的窗口名parameter:指定要传递给打开工作表的数据,该数据保存在Message对象的属性中, parameter参数的数据类型必须是下述三种类型之一:String、Numeric、PowerObjectwindowtype:string类型,可选项,指定是要打开窗口的类型(也就是窗口画笔中保存的窗口对象名)mdiframe:指定要放置工作表的MDI框架窗口名position:可选 Permalink | Comment (0) PowerBuilder PB控件编程规范 2012 年 3 月 27 日 &#8211; 上午 1:35 一、公共部分   a.应尽量为所有控件使用有意义的名称,重要控件不允许使用 pb_1 之类无明确意义的名称。   b.大号字体:各窗口控件字体为Arial,字号为12号,字色为黑色。小号字体:各窗口控件字体为宋体,字号为9号,字色为黑色。   c.显示控件和输入控件底色分开,显示控件为灰色(窗口颜色),输入控件为白色。   d.输入区和显示区分别放置。   e.按钮排列紧凑,在窗口右侧纵向排列时靠上放置;在窗口下方排列时靠右放置,因为左撇子操作者毕竟是少数。   f.各字符类控件对齐方式为左对齐;数字类控件为右对齐,且必须按所需格式设置Format 属性;日期控件必须保证能完整显示所需日期格式,应用yyyy-mm-dd风格。及有前导0的形式(避免2000年问题),可采用左对齐或中对齐。   g.CommandButton控件的推荐高度为104。   二、控件细则   1. 静态文本框   静态文本框命名规则:st + &#8216;_&#8217; + 名称(若为label可不改名)。   外观规定如下:   背景色:buttonface;   前景色:黑色;   边 ;框:无;   高 ;度:72。   ;建议在其后加上全角冒号(:)。   2. 单行编辑框   单行编辑框命名规则:sle + &#8216;_&#8217; + 名称。   (1)外观   背景色:白色;   前景色:黑色;   ;边 ;框:3D Lowered;   ;高 ;度:72。   (2)程序说明   a.响应事件建议自定义 Keydown 事件,尽量不要用 Modify 事件。   b.当获得焦点时控件背景变为深蓝色,字体颜色变为黄色,失去焦点时还原缺省颜色。   3. 命令按钮   命令按钮命名规则:cb + &#8216;_&#8217; + 名称   (1)外观   高度:对于小号字体(宋体9号)为92;   对于大号字体(Arial 12号)为108。   宽度:对于小号字体(宋体9号)为325;   对于大号字体(Arial 12号)为402。   (2)说明   命令按钮控件不要使用 cb_1 之类无明确意义的名称(尤其在窗口中这类控件比较多时,可能令人分不清各个控件的作用)。   4. 图像按钮   尽量不用图形按钮,而用命令按钮。   图像按钮命名规则: pb + &#8216;_&#8217; + 名称。   外观规定如下:   尺寸:用图像原始尺寸;   图像:按钮的有效与无效采用不同的bmp图像以示区别。   5. 复选框   复选框命名规则:cbx + &#8216;_&#8217; + 名称   外观规定如下:   背景色:buttonface;   前景色:黑色;   边 ;框:3D Lowered;   高 ;度:92;   位 ;置:标签在右。 6. 单选按钮   单选按钮命名规则:rb + &#8216;_&#8217; + 名称。   (1)外观   背景色:buttonface;   前景色:黑色;   边 ;框:3D Lowered;   高 ;度:92;   位 ;置:标签在右。   (2)程序说明   单选按钮最好与组框配合使用。   7. 组框   组框命名规则:gb + &#8216;_&#8217; + 名称。   外观规定如下:   背景色:buttonface;   前景色:黑色;   边 ;框:3D Lowered。   8. 屏蔽编辑框   屏蔽编辑框命名规则:em + &#8216;_&#8217; + 名称。   (1)外观   背景色:白色;   前景色:黑色;   边 ;框:3D Lowered。   (2)程序说明   a.响应事件建议用自定义 Keydown 事件,尽量不要用 Modify 事件。   b.当获得焦点时控件背景变为深蓝色,字体颜色变为黄色,失去焦点时还原缺省颜色。   9. 下拉列表框   下拉列表框命名规则:ddlb + &#8216;_&#8217; + 名称。   外观规定如下:   背景色:白色;   前景色:黑色;   边 ;框:3D Lowered。   10. 应用   应用命名规则:app + &#8216;_&#8217; + 应用名。   为应用选择一个图标,以便在运行时标识应用。   在 Open 事件中声明 SQLCA 全局变量和打开应用主窗口。   在 Closequery 事件中编写退出应用之前的处理程序。   在 SystemError 事件中编写系统出错的处理程序。   11. 窗口   窗口命名规则: ;w + &#8216;_&#8217; + 窗口名。   主窗口采用 main 窗口类型,子窗口一般采用 Popup 窗口类型,无控制菜单,无最大化最小化按钮,不可改变大小。若为一般性提示窗口,用 response 窗口类型。   窗口以 buttonface 颜色为背景颜色。   重要的菜单选项设置 Toolbar 功能。   窗口上下左右四周应至少留出两个网格,而不得将对象填满整个窗口!   12. 菜单   菜单命名规则: m + &#8216;_&#8217; + 菜单名。   菜单项 MenuItem 的名称以该菜单项在整个菜单中的物理位置分层次命名。   例:若 MenuItem 位于整个菜单的第三列第二行,则命名为 m_32。   或文件菜单下的“关闭”菜单项,则命名为 m_file_close。   13. 数据窗口对象   数据窗口对象命名规则:d + &#8216;_&#8217; + 功能含义。   打印用数据窗口背景色为白色,题目为16号字,内容为11号字,显示比例为75%。   显示用数据窗口背景色原则上为 buttonface,可视窗口制作是否美观的实际情况使用白色数据窗口各列显示框高度为 72。   Tabular和Grid风格数据窗口,无表头时列名文本边框为3D Raised。Detail区为3D Lowered,背景色原则上为白色。Grid风格数据窗口一般不出现线条。   14. 数据窗口控件   数据窗口控件命名规则:dw + &#8216;_&#8217;+ 功能含义。   数据窗口边框原则上为 3D Lowered,也可酌情使用 none 外加 group。   15. 用户对象命名 用户对象命名规则:uo + &#8216;_&#8217;+ 功能含义。   ;公共对象对应以上各控件规范制作。 Permalink | Comment (0) PowerBuilder Power Builder 语法 2012 年 3 月 27 日 &#8211; 上午 1:29 14.1 名词 14.1.1 注释行 注释行用来书写说明,它有两种写法: 以“//”开头,其后书写注释内容,常用于单行注释。 “/*…*/”中间的部分为注释,便于多行说明。 例如: //这是一个单行注释 INTEGER I I = I+1 页面: 1 2 3 4 5 6 7 Permalink | Comment (0) PowerBuilder PB KeyDown函数的使用 2012 年 3 月 22 日 &#8211; 上午 7:04 语法:??? KeyDown(keycode) 参数(keycode): keyleftbutton!?? keymiddlebutton! keyrightbutton! keyA!-keyZ! keyback! keyTab! keyEnter! keySpacebar! keyF1!-keyF12! keyshift! keycontrol! keyAlt! keypause! keyCapsLock! keyEscape! KeyPrintScreen! KeyInsert! KeyDelete! KeyPageUp! keyPageDown! KeyEnd! KeyHome! KeyLeftArrow! KeyUpArrow! KeyRightArrow! KeyDownArrow! Permalink | Comment (0) PowerBuilder PowerBuilder60个常用API 2012 年 3 月 22 日 &#8211; 上午 2:01 Windows 60个常用API 附录A 常用的Windows API 调用 本附录列出了PowerBuilder 常用Windows API 系统调用同时给出了这些函数的功能 说明方式以及应用示例下表首先给出常用API 调用的名称和扼要功能读者需要详细了 解某个函数的声明格式和示例时可通过序号在本附录中找到相应说明 表A 常用的Windows API 系统 序号 函数 功能 1 Arc() 在窗口上画一条弧线 2 Beep() 让计算机按指定的频率和周期发声 3 BringWindowToTop() 将窗口放置在最前面 4 Chord() 绘制弦图 5 CloseHandle() 释放打开对象的句柄 6 CloseWindow() 最小化窗口 7 DeleteFileA() 删除文件 8 DeleteMenu() 删除指定菜单的菜单项 9 DestroyWindow() 关闭窗口 10 DllRegisterServer() 触发OCX 控件完成自注册过程 11 Ellipse() 绘制椭圆 12 ExitWindowsEx() 通知Windows 关闭操作系统 13 FatalExit() 立即退出应用程序 14 FindWindowA() 根据窗口标题查找窗口 15 FreeLibrary() 从活动内存中卸载一个DLL 16 GetBkColor() 得到指定窗口的背景颜色 17 GetCapture() 得到鼠标所在窗口的句柄 18 GetComputerNameA() 得到执行应用程序的计算机的名称 19 GetClassNameA() 得到指定窗口或对象的类名 20 GetCurrentDirectoryA() 得到当前工作目录 21 GetCurrentThread() 得到当前线程的句柄 22 GetCursor() 得到光标的句柄 23 GetCursorPos() 得到光标的位置 24 GetDC() 得到指定窗口的设备上下文 25 GetKeyboardState() 得到键盘的状态 26 GetKeyState() 得到键盘上指定按键的状态 27 GetModuleHandleA() 得到活动内存中指定模块或动态链接库的句柄 28 GetPixel() 得到窗口上指定像素的颜色 29 GetSystemMenu() 得到系统菜单或窗口菜单的句柄 30 GetSystemTime() 得到系统时间并存放到一个结构中 31 GetThreadPriority() 得到指定线程的优先级 32 GetSystemMetrics() 得到屏幕的解析度以像素为单位 33 GetUserNameA() 得到当前用户的登录名称 34 GetVolumnInformationA() 得到硬盘的参数信息 35 GetWindowsDirectoryA() 得到缺省的Windows 目录 36 GlobalMemoryStatus() 得到内存的详细信息 ???? 附录A 常用的774 Windows API 调用 附录 A 常用的 Windows API调用 774 序号 函数 功能 37 LineTo() 从当前位置到指定位置绘制一条直线 38 LoadLibraryA() 将32 位DLL 加载到活动内存中 39 mciSendStringA() 控制和播放.AVI 文件 40 MessageBoxA() 显示一个消息对话框 41 Mouse_Event() 控制和操作鼠标 42 MoveToEx() 将光标移动到指定位置同时保存移动前的光标位置 43 MoveWindow() 移动放大或缩小窗口 44 Pie() 绘制饼图 45 Polygon() 绘制多边形 46 PostMessageA() 向创建指定窗口的线索发送一条消息但不等待线索处理该消息 47 Rectangle() 绘制矩形 48 ReleaseCapture() 解锁鼠标 49 SendMessageA() 向创建指定窗口的线索发送一条消息但等待线索处理该消息 50 SetCapture() 锁定鼠标 51 SetComputerNameA() 修改计算机的名称 52 SetCurrentDirectoryA() 设置当前目录 53 SetCursorPos() 设置光标的位置 54 SetFocus() 将输入焦点设置到指定对象或窗口上 55 SetKeyboardState() 设置键盘的状态 56 SetPixel() 设置窗口上指定像素的颜色 57 SetThreadPriority() 设置线程的优先级 58 Sleep() 睡眠指定的时间 59 SndPlaySoundA() WaveOutGetNumDevs() 播放.WAV 文件 60 SwapMouseButton() 交换鼠标的左右按钮 61 WinExec() 运行指定的可执行文件 使用这些函数时首先将它们声明为外部全局函数然后在脚本中调用在下面的所 有声明格式中声明都应该在一行内书写由于排版原因本书可能分写在多行上需 要注意的是所有引用类参数由关键字Ref 指明在传递之前都必须分配足够的内存 否则可能引发GPF 错误参看函数GetComputerNameA()的说明下面分别介绍这些函 数 1 Arc() 功能在窗口上画一条弧线 声明格式FUNCTION boolean Arc(ulong hwnd,long r1,long r2,long r3,long r4,long a1, long a2,long a3,long a4) LIBRARY &#8220;Gdi32.dll&#8221; 示例 Boolean rtn ulong l_handle, l_device long lv[8] l_handle = handle(w_main) // w_main 是一个示例窗口 l_device = GetDC(l_handle) //得到窗口的设备上下文 lv[ ] = {10,40,300,220,0,0,180,0} //数组赋值 rtn = Arc(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8]) 2 Beep() 功能让计算机按指定的频率和周期发声 ???? 附录A 常用的Windows API 调用 775 附录 A 常用的 Windows API调用 775 声明格式FUNCTION boolean Beep(long freq,long dur) LIBRARY &#8220;Kernel32.dll&#8221; 示例 Boolean rtn Long ll_freq, ll_dur ll_freq = 500 ll_dur = 20 rtn = Beep(ll_freq, ll_dur) 3 BringWindowToTop() 功能将窗口放置在最前面 声明格式FUNCTION boolean BringWindowToTop(ulong w_handle) LIBRARY &#8220;User32.dll&#8221; 示例 Boolean rtn ulong l_handle l_handle = handle(w_win2) //得到窗口的句柄 rtn = BringWindowToTop(l_handle) 4 Chord() 功能绘制弦图弦图由椭圆的一部分和一个线段组成 声明格式FUNCTION boolean Chord(ulong hwnd,long x1,long y1,long x2,long y2,long r1, long r2, long r3, long r4) LIBRARY &#8220;Gdi32.dll&#8221; 示例 boolean rtn ulong l_handle, l_device long lv[8] l_handle = handle(w_main) l_device = GetDC(l_handle) l_device = GetDC(handle(w_main)) lv[ ] = {5,5,200,200,0,0,200,300} rtn = Chord(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8]) 5 CloseHandle() 功能释放打开对象的句柄 声明格式FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY &#8220;Kernel32.dll&#8221; 示例 boolean rtn ulong l_handle rtn = CloseHandle(l_handle) //l_handle 为窗口或对象的句柄 6 CloseWindow() 功能最小化窗口 声明格式FUNCTION boolean CloseWindow(ulong w_handle) LIBRARY &#8220;User32.dll&#8221; 示例 boolean rtn ulong l_handle string ls_wname ls_wname = &#8220;<窗口标题>&#8221; //请替换为要最小化的窗口的准确标题 l_handle = FindWindowA(0, ls_wname) //由窗口标题找到窗口句柄 rtn = CloseWindow(l_handle) 7 DeleteFileA() ???? 附录A 常用的776 Windows API 调用 附录 A 常用的 Windows API调用 776 功能删除文件 声明格式FUNCTION boolean DeleteFileA(ref string filename) LIBRARY &#8220;Kernel32.dll&#8221; 示例 下例中用户在单行编辑框中输入一个文件名后代码将该文件删除 string l_file boolean rtn l_file = string(sle_deletefile.text) rtn = DeleteFileA(l_file) MessageBox(&#8220;删除文件&#8221;, string(rtn)) 8 DeleteMenu() 功能删除指定菜单的菜单项如果该菜单项下还有子菜单则函数删除指向子菜单 的句柄并释放子菜单所占用的内存 声明格式FUNCTION boolean DeleteMenu(ulong mhand, uint upos, uint flag) LIBRARY &#8220;user32.dll&#8221; 示例 ulong m_handle boolean rtn m_handle = GetSystemMenu(handle(w_main), false) // 首先得到系统菜单的句柄 rtn = DeleteMenu(m_handle, 1, 0) // 第二个参数这里为1 指定要删除菜 //单项在菜单中的位置 Messagebox(&#8220;菜单句柄&#8221;, string(m_handle)) Messagebox(&#8220;菜单删除结果&#8221;, string(rtn)) 9 DestroyWindow() 功能关闭窗口该函数向指定窗口发送一条删除窗口的消息 声明格式FUNCTION boolean DestroyWindow(ulong w_handle) LIBRARY &#8220;USER32.DLL&#8221; 示例 boolean rtn ulong l_handle open(w_win2) // 打开一个测试窗口 l_handle = handle(w_win2) //得到窗口的句柄 rtn = DestroyWindow(l_handle) //关闭窗口 10 DllRegisterServer() 功能触发OCX 控件完成自注册过程实际使用时将声明格式中ocxname 替换为 真实的OCX 的名称 声明格式FUNCTION long DllRegisterServer() LIBRARY &#8220;c:\windows\ocxname.ocx&#8221; 示例 Long ll_rtn ll_rtn = DllRegisterServer() //通常返回0 表示OCX 已经注册 11 Ellipse() 功能绘制椭圆 声明格式FUNCTION boolean Ellipse(ulong hwnd,long x1,long y1,long x2,long y2) LIBRARY &#8220;Gdi32.dll&#8221; 示例 Boolean rtn ulong l_handle, l_device long lv[4] ???? 附录A 常用的Windows API 调用 777 附录 A 常用的 Windows API调用 777 l_handle = handle(w_main) l_device = GetDC(l_handle) lv[ ] = {5,5,300,300} rtn = Ellipse(l_device, lv[1], lv[2], lv[3], lv[4]) 12 ExitWindowsEx() 功能通知Windows 关闭操作系统 声明格式FUNCTION boolean ExitWindowsEx(uint dwReserved, uint uReserved) LIBRARY &#8220;User32.dll&#8221; 示例 boolean rtn rtn = ExitWindowsEx(0,0) // 两个参数0 告诉Windows 立即关闭系统 13 FatalExit() 功能立即退出应用程序不做任何清理工作各种对象依然保留在内存中调用该 函数时通常会导致GPF 错误一般在调试应用程序时使用 声明格式SUBROUTINE FatalExit(int exitcode) LIBRARY &#8220;Kernel32.dll&#8221; 示例 int rtn rtn = MessageBox(&#8220;该API 调用将产生GPF 错误!&#8221;,&#8221;一定要做吗&#8221;, Exclamation!, YesNo!,2) If rtn = 1 Then MessageBox(&#8220;再次警告!&#8221;,&#8221;执行该API 调用后必须重新启动系统&#8221;) FatalExit(1) End If 14 FindWindowA() 功能根据窗口标题查找窗口 声明格式FUNCTION ulong FindWindowA(ulong classname,string windowname) LIBRARY &#8220;User32.dll&#8221; 示例 ulong l_handle string ls_wname ls_wname = &#8220;<窗口标题>&#8221; //比如无标题 &#8211; 记事本 l_handle = FindWindowA(0, ls_wname) 15 FreeLibrary() 功能从活动内存中卸载一个DLL 警告卸载正在使用的DLL 时将引发GPF 声明格式SUBROUTINE FreeLibrary(ulong libhandle) LIBRARY &#8220;Kernel32.dll&#8221; 示例 ulong modhandle modhandle = LoadLibrary(&#8220;<32 位dll 文件名>&#8221;) //通常在另一个事件过程中加载库 FreeLibrary(modhandle) 16 GetBkColor() 功能得到指定窗口的背景颜色 声明格式FUNCTION ulong GetBkColor (ulong hwnd) LIBRARY &#8220;Gdi32.dll&#8221; 示例 ulong l_handle, l_device, l_color l_handle = handle(w_main) l_device = GetDC(l_handle) //得到设备上下文 l_color = GetBkColor(l_device) //得到背景颜色 17 GetCapture() ???? 附录A 常用的778 Windows API 调用 附录 A 常用的 Windows API调用 778 功能得到鼠标所在窗口的句柄 声明格式FUNCTION ulong GetCapture( ) LIBRARY &#8220;User32.dll&#8221; 示例 ulong l_handle l_handle = GetCapture( ) 18 GetComputerNameA() 功能得到执行应用程序的计算机的名称需要注意的是名称参数cname 必须分配 足够的内存否则在退出应用程序时可能会引发GPF 错误实际上所有外部函数的引用 类参数都必须分配足够的内存 声明格式FUNCTION boolean GetComputerNameA(ref string cname,ref long nbuf) LIBRARY &#8220;Kernel32.dll&#8221; 示例 string ls_compname long ll_buf ll_buf = 25 //设置cname 参数的长度 ls_compname = space(ll_buf) //为ls_compname 参数分配空间 GetComputerNameA(ls_compname, ll_buf) MessageBox(&#8220;计算机名称&#8221;, ls_compname) 19 GetClassNameA() 功能得到指定窗口或对象的类名 声明格式Function long GetClassNameA(ulong hwnd, ref string cname, int buf) Library &#8220;User32.dll&#8221; 示例 string l_class long rtn ulong l_handle l_handle = handle(w_main) l_class = space(50) rtn = GetClassNameA(l_handle,l_class,50) Messagebox(&#8220;类名&#8221;, l_class) 20 GetCurrentDirectoryA() 功能得到当前工作目录 声明格式FUNCTION ulong GetCurrentDirectoryA(ulong BufferLen, ref string currentdir) LIBRARY &#8220;Kernel32.dll&#8221; 示例 string ls_curdir ulong l_buf l_buf = 100 ls_curdir = space(l_buf) //为参数分配空间 GetCurrentDirectoryA(l_buf, ls_curdir) MessageBox(&#8220;当前目录&#8221;, ls_curdir) 21 GetCurrentThread() 功能得到当前线程的句柄 声明格式FUNCTION ulong GetCurrentThread() LIBRARY &#8220;Kernel32.dll&#8221; 示例 ulong rtn rtn = GetCurrentThread() ???? 附录A 常用的Windows API 调用 779 附录 A 常用的 Windows API调用 779 MessageBox(&#8220;当前线程句柄&#8221;, string(rtn)) 22 GetCursor() 功能得到光标的句柄 声明格式FUNCTION ulong GetCursor( ) LIBRARY &#8220;User32.dll8 示例 ulong l_cursor l_cursor = GetCursor( ) 23 GetCursorPos() 功能得到光标的位置参数mousepos 是一个结构它包括两个分量long xpos, long ypos 声明格式FUNCTION boolean GetCursorPos(ref mousepos) LIBRARY &#8220;User32.dll&#8221; 示例 mousepos mouseloc GetCursorPos(mouseloc) Messagebox(&#8220;光标位置&#8221;, &#8220;X=&#8221;+string(mouseloc.xpos)+&#8221;Y=&#8221;+string(mouseloc.ypos)) 24 GetDC() 功能得到指定窗口的设备上下文如果想执行图形外部函数调用必须得到设备上 下文 声明格式Function ulong GetDC(ulong hwnd) library &#8220;user32.dll&#8221; 示例 ulong l_handle, l_device l_handle = handle(w_main) l_device = GetDC(l_handle) MessageBox(&#8220;设备上下文&#8221;, string(l_device)) 25 GetKeyboardState() 功能得到键盘的状态该函数按照字符的ASCII 码表示将键盘上每个键的状态保 存到包含256 个整数元素的数组中值0 表示相应键没有被按下 声明格式FUNCTION boolean GetKeyboardState(ref integer kbarray[256]) LIBRARY &#8220;USER32.DLL&#8221; 示例 boolean rtn integer ipkey[256] rtn = GetKeyboardState(ipkey) 26 GetKeyState() 功能得到键盘上指定按键的状态值0 表示相应键没有被按下 声明格式Function int GetKeyState(integer VirtualKeycode) Library &#8220;User32.dll&#8221; 示例 int rtn rtn = GetKeyState(65) // 65 = A if rtn = 0 then MessageBox(&#8220;按键状态&#8221;,&#8221;字母A 没有按下&#8221;) else MessageBox(&#8220;按键状态&#8221;,&#8221;字母A 被按下&#8221;) end if 27 GetModuleHandleA() 功能得到活动内存中指定模块或动态链接库的句柄可以使用FreeLibrary()函数释 ???? 附录A 常用的780 Windows API 调用 附录 A 常用的 Windows API调用 780 放该函数得到其句柄的模块或动态链接库 声明格式Function long GetModuleHandleA(string modname) Library &#8220;Kernel32.dll&#8221; 示例 ulong rtn rtn = GetModuleHandleA(&#8220;User32.dll&#8221;) MessageBox(&#8220;返回代码&#8221;, string(rtn)) 28 GetPixel() 功能得到窗口上指定像素的颜色 声明格式FUNCTION ulong GetPixel(ulong hwnd, long xpos, long ypos) LIBRARY &#8220;Gdi32.dll&#8221; 示例 请参看SetPixel()函数 29 GetSystemMenu() 功能得到系统菜单或窗口菜单的句柄 声明格式FUNCTION boolean GetSystemMenu(ulong mhandle, boolean flag) LIBRARY &#8220;user32.dll&#8221; 示例 boolean flag ulong l_handle, m_handle l_handle = handle(w_main) flag = false m_handle = GetSystemMenu(l_handle, flag) Messagebox(&#8220;返回值&#8221;, string(m_handle)) 30 GetSystemTime() 功能得到系统时间并存放到一个结构中SystemTime 结构的分量为uint year uint month uint dayofweek uint day uint hour uint minute uint second uint millisecond 声明格式SUBROUTINE GetSystemTime(ref systemtime systimeptr) Library &#8220;Kernel32.dll&#8221; 示例 systemtime s_systime string l_day, l_date, l_time GetSystemTime(s_systime) l_date = string(s_systime.year) +&#8221;/&#8221;+ string(s_systime.day) & +&#8221;/&#8221;+string(s_systime.month) //日期年/月/日 l_time = string(s_systime.hour) +&#8221;:&#8221;+ string(s_systime.minute) & +&#8221;:&#8221;+ string(s_systime.second) +&#8221;:&#8221;+ string(s_systime.millisecond) //时分秒毫秒 CHOOSE CASE s_systime.dayofweek CASE 1 l_day = &#8220;星期日&#8221; CASE 2 l_day = &#8220;星期一&#8221; CASE 3 l_day = &#8220;星期二&#8221; CASE 4 l_day = &#8220;星期三&#8221; CASE 5 l_day = &#8220;星期四&#8221; ???? 附录A 常用的Windows API 调用 781 附录 A 常用的 Windows API调用 781 CASE 6 l_day = &#8220;星期五&#8221; CASE 7 l_day = &#8220;星期六&#8221; END CHOOSE Messagebox(&#8220;系统时间&#8221;,l_date + &#8221; &#8221; + l_day + &#8221; &#8221; + l_time) 31 GetThreadPriority() 功能得到指定线程的优先级线程的缺省优先级为0 大于0 的值优先级更高因 而线程将得到更多的CPU 时间 声明格式FUNCTION int GetThreadPriority(ulong hthread) LIBRARY &#8220;Kernel32.dll&#8221; 示例 ulong l_handle integer rtn l_handle = GetCurrentThread() rtn = GetThreadPriority(l_handle) MessageBox(&#8220;当前线程的优先级&#8221;, string(rtn)) 32 GetSystemMetrics() 功能得到屏幕的解析度以像素为单位请注意该函数区分大小写函数名称要 严格按照书上的式样书写 声明格式FUNCTION int GetSystemMetrics(int indexnum) LIBRARY &#8220;user32.dll&#8221; 示例 int l_xx, l_yy l_xx = GetSystemMetrics(0) //得到X 方向解析度 l_yy = GetSystemMetrics(1) //得到Y 方向解析度 Messagebox(&#8220;屏幕解析度&#8221;, string(l_xx) + &#8221; , &#8221; + string(l_yy)) 33 GetUserNameA() 功能得到当前用户的登录名称 声明格式FUNCTION boolean GetUserNameA(ref string uname, ref ulong slength) LIBRARY &#8220;ADVAPI32.DLL&#8221; 示例 string ls_username string ls_var ulong lu_val boolean rtn lu_val = 255 ls_username = Space( 255 ) //分配足够的空间 rtn = GetUserNameA(ls_username, lu_val) Messagebox(&#8220;GetUserNameA&#8221;, &#8220;用户名为&#8221; + string(ls_username)) 34 GetVolumnInformationA() 功能得到硬盘的参数信息 声明格式FUNCTION boolean GetVolumeInformation(ref string lpRootPathName,ref string lpVolumeNameBuffer,ulong nVolumeNameSize,ref ulong lpVolumeSerialNumber,ref ulong lpMaximumComponentLength,ref ulong lpFileSystemFlags,ref string lpFileSystemNameBuffer, ulong nFileSystemNameSize) Library &#8220;kernel32.dll&#8221; 示例 boolean rtn ???? 附录A 常用的782 Windows API 调用 附录 A 常用的 Windows API调用 782 string lprootpathname = &#8220;c:&#8221; //驱动器 string lpVolumeNameBuffer = space(256) //分配足够的空间 ulong nVolumeNameSize = 256 ulong lpVolumeSerialNumber ulong lpMaximumComponentLength setnull(lpVolumeSerialNumber) lpMaximumComponentLength = 256 ulong lpFileSystemFlags setnull(lpFileSystemFlags) string lpFileSystemNameBuffer = space(256) //分配足够的空间 ulong nFileSystemNameSize = 256 rtn = GetVolumeInformationA(lpRootPathName, lpVolumeNameBuffer, & nVolumeNameSize,lpVolumeSerialNumber, lpMaximumComponentLength, & lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize) sle_1.text = lprootpathname //路径名 sle_2.text = lpVolumeNameBuffer sle_3.text = string(nVolumeNameSize) sle_4.text = string(lpVolumeSerialNumber) sle_5.text = string(lpMaximumComponentLength) sle_6.text = string(lpFileSystemFlags) sle_7.text = string(lpFileSystemNameBuffer) sle_8.text = string(nFileSystemNameSize) 35 GetWindowsDirectoryA() 功能得到缺省的Windows 目录 声明格式FUNCTION ulong GetWindowsDirectoryA(ref string wdir, ulong buf) LIBRARY &#8220;kernel32.dll&#8221; 示例 ulong l_buf string windir l_buf = 144 windir = space(144) GetWindowsDirectoryA(windir, l_buf) MessageBox(&#8220;当前目录&#8221;, windir) 36 GlobalMemoryStatus() 功能得到内存的详细信息该函数使用的Memory 结构包括下述分量ulong m_length ulong m_loaded ulong m_totalphys ulong m_availphys ulong m_totalpagefile ulong m_availpagefile ulong m_totalvirtual ulong m_availvirtual 声明格式SUBROUTINE GlobalMemoryStatus(ref memory mem2) LIBRARY &#8220;Kernel32.dll&#8221; 示例 memory sysmem GlobalMemoryStatus(sysmem) Messagebox(&#8220;内存大小&#8221;, string(sysmem.m_length)) Messagebox(&#8220;已加载内存&#8221;, string(sysmem.m_loaded)) Messagebox(&#8220;总的物理内存&#8221;, string(sysmem.m_totalphys)) Messagebox(&#8220;总的可用内存&#8221;, string(sysmem.m_availphys)) ???? 附录A 常用的Windows API 调用 783 附录 A 常用的 Windows API调用 783 Messagebox(&#8220;总的页面数&#8221;, string(sysmem.m_totalpagefile)) Messagebox(&#8220;可用页面数&#8221;, string(sysmem.m_availpagefile)) Messagebox(&#8220;总的虚拟内存&#8221;, string(sysmem.m_totalvirtual)) Messagebox(&#8220;可用虚拟内存&#8221;, string(sysmem.m_availvirtual)) 37 LineTo() 功能从当前位置到指定位置绘制一条直线 声明格式FUNCTION boolean LineTo(ulong hwnd,long wx, long wy) LIBRARY &#8220;Gdi32.dll&#8221; 示例 请参看MoveToEx()函数 38 LoadLibraryA() 功能将32 位DLL 加载到活动内存中 声明格式FUNCTION ulong LoadLibraryA(string modname) LIBRARY &#8220;Kernel32.dll&#8221; 示例 ulong modhandle //当DLL 库在DOS 搜索路径上时可以不指定路径 modhandle = LoadLibraryA(&#8220;c:\windows\mydll.dll&#8221;) If modhandle > 0 Then MessageBox(&#8220;返回值&#8221;, &#8220;加载成功句柄 = &#8221; + string(modhandle)) else MessageBox(&#8220;函数执行结果&#8221;,&#8221;不能加载指定模块&#8221;) end if 39 mciSendStringA() 功能控制和播放.AVI 文件 声明格式FUNCTION long mciSendStringA(string cmd, REF string rtn, long size, long wnd) LIBRARY &#8220;winmm.dll&#8221; 示例 string s_errortext string filename filename =&#8221;c:\spin.avi&#8221; mciSendStringA (&#8220;open &#8220;+Filename+&#8221; type AVIVideo alias test wait&#8221;,s_errortext, 0,0) mciSendStringA (&#8220;Window test handle &#8221; + string(handle(w_main)) + &#8221; wait&#8221;,s_errortext, 0, 0) mciSendStringA (&#8220;Put test destination wait&#8221;,s_errortext, 0, 0) mciSendStringA (&#8220;Play test wait&#8221;, s_errortext, 0, 0) mciSendStringA (&#8220;Close test&#8221;, s_errortext, 0, 0) 40 MessageBoxA() 功能显示一个消息对话框 声明格式FUNCTION long MessageBoxA(ulong hwnd, ref string text, ref string title, ulong style) LIBRARY &#8220;User32.dll&#8221; 示例 long rtn ulong handle1, style1 string text1 string title1 handle1 = handle(parent) text1 = &#8220;这是一个API Messagebox&#8221; title1 = &#8220;API MessageBox&#8221; ???? 附录A 常用的784 Windows API 调用 附录 A 常用的 Windows API调用 784 style1 = 0 rtn = MessageBoxA(handle1,text1,title1,style1) 41 Mouse_Event() 功能控制和操作鼠标该函数能够移动鼠标指针按下鼠标按钮并且能够完成用 户使用鼠标能够完成的一切任务下面的示例将鼠标指针左移100 个像素上移70 个像素 声明格式SUBROUTINE Mouse_Event(ulong dwflag,ulong dx,ulong dy,ulong cbutton,ulong dwextra) LIBRARY &#8220;User32.dll&#8221; 示例 int lflag lflag = 1 //1 = 移动鼠标指针, 7 = 按下左按钮, 25 = 按下右按钮 mouse_event(lflag,-80,-50,0,0) 42 MoveToEx() 功能将光标移动到指定位置同时保存移动前的光标位置函数使用的prepos 结构 包含下述分量long xpos, long ypos 声明格式FUNCTION boolean MoveToEx(ulong hwnd,long wx, long wy,ref prepos prepos2) LIBRARY &#8220;Gdi32.dll&#8221; 示例 ulong l_handle, l_device prepos previouspos //用于保存光标移动前的位置 l_handle = handle(w_main) l_device = GetDC(l_handle) MoveToEx(l_device,200,200,previouspos) //将光标移动到200,200 处 LineTo(l_device,300,300) //在当前位置和300,300 之间画一条直线 43 MoveWindow() 功能移动放大或缩小窗口 声明格式FUNCTION boolean MoveWindow(ulong whand,int wx,int wy,int ww,int wh,boolean wflag) LIBRARY &#8220;user32.dll&#8221; 示例 boolean rtn ulong l_handle, l_device l_handle = handle(w_main) //10-X 位置20-Y 位置100-宽度200-高度 rtn = MoveWindow(l_handle,10,20,100,200,true) MessageBox(&#8220;返回值&#8221;,string(rtn)) 44 Pie() 功能绘制饼图 声明格式FUNCTION boolean Pie(ulong hwnd,long x1,long y1,long x2,long y2,long x3,long y3,long x4,long y4) LIBRARY &#8220;Gdi32.dll&#8221; 示例 Boolean rtn ulong l_handle,l_device long lv[8] lv[ ] = {10,50,290,220,0,0,80,0} l_handle = handle(w_main) l_device = GetDC(l_handle) rtn = Pie(l_device,lv[1],lv[2],lv[3],lv[4],lv[5],lv[6],lv[7],lv[8]) ???? 附录A 常用的Windows API 调用 785 附录 A 常用的 Windows API调用 785 45 Polygon() 功能绘制多边形该函数使用的结构poly 包含下述分量long xpos[5], long ypos[5] 数组的大小与多边形边的条数相关示例中边的条数为5 声明格式FUNCTION boolean Polygon(hdc, ref struct poly poly2, int cnt) LIBRARY &#8220;Gdi32.dll&#8221; 示例 ulong l_handle, l_device int pcnt l_handle = handle(w_main) l_device = GetDC(l_handle) pcnt = 5 poly poly3 poly3.xpos[ ] = {50,100,150,200,250} poly3.ypos[ ] = {50,100,150,200,250} Polygon(l_device,poly3,pcnt) 46 PostMessageA() 功能向创建指定窗口的线索发送一条消息但不等待线索处理该消息 声明格式FUNCTION boolean PostMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong lParam) Library &#8220;User32.dll&#8221; 示例 ulong l_handle boolean rtn l_handle = handle(w_main) // 61472 = 最小化窗口61488 = 最大化窗口61728 = 正常窗口 rtn = PostMessageA(l_handle,274,61472,0) 47 Rectangle() 功能绘制矩形 声明格式FUNCTION boolean Rectangle(ulong hwnd,long x1,long y1,long x2,long y2) LIBRARY &#8220;Gdi32.dll&#8221; 示例 Boolean rtn ulong l_handle,l_device long lv[4] lv[ ] = { 10,10,275,215} //矩形的四个顶点 l_handle = handle(w_main) l_device = GetDC(l_handle) rtn = Rectangle(l_device,lv[1],lv[2],lv[3],lv[4]) 48 ReleaseCapture() 功能解锁鼠标 声明格式FUNCTION boolean ReleaseCapture( ) LIBRARY &#8220;User32.dll&#8221; 示例 请参看SetCapture()函数 49 SendMessageA() 功能向创建指定窗口的线索发送一条消息但等待线索处理该消息 声明格式FUNCTION long SendMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong lParam) Library &#8220;User32.dll&#8221; ???? 附录A 常用的786 Windows API 调用 附录 A 常用的 Windows API调用 786 示例 ulong l_handle long rtn l_handle = handle(w_main) rtn = SendMessageA(l_handle,274,61728,0) 50 SetCapture() 功能锁定鼠标鼠标锁定后使用ReleaseCapture()解锁鼠标 声明格式FUNCTION ulong SetCapture(ulong a) LIBRARY &#8220;User32.dll&#8221; 示例 boolean rtn ulong l_loop, u_test, u_long u_test = handle(parent) u_long = SetCapture(u_test) //锁定鼠标 SetPointer(SizeNWSE!) for l_loop = 1 to 150000 //循环等待 next rtn = ReleaseCapture( ) //解锁鼠标 51 SetComputerNameA() 功能修改计算机的名称 声明格式FUNCTION boolean SetComputerNameA(ref string cname) LIBRARY &#8220;kernel32.dll&#8221; 示例 boolean rtn string l_name l_name = &#8220;ZCF 计算机&#8221; rtn = SetComputerNameA(l_name) if rtn then MessageBox(&#8220;计算机的名称已经修改为ZCF 计算机&#8221;, & &#8220;重新启动计算机后该名称发挥作用&#8221;) else MessageBox(&#8220;设置计算机名称&#8221;, &#8220;咳失败了&#8221;) end if 52 SetCurrentDirectoryA() 功能设置当前目录 声明格式FUNCTION boolean SetCurrentDirectoryA(ref string cdir) LIBRARY &#8220;kernel32.dll&#8221; 示例 boolean rtn string l_dir l_dir = &#8220;C:\My Documents&#8221; rtn = SetCurrentDirectoryA(l_dir) MessageBox(&#8220;SetCurrentDirectory&#8221;, string(rtn)) 53 SetCursorPos() 功能设置光标的位置 声明格式FUNCTION boolean SetCursorPos(int cx, int cy) LIBRARY &#8220;User32.dll&#8221; 示例 SetCursorPos(300,350) Messagebox(&#8220;光标位置&#8221;,&#8221;X =&#8221; +string(mouseloc.xpos) + &#8220;Y =&#8221; & ???? 附录A 常用的Windows API 调用 787 附录 A 常用的 Windows API调用 787 + string(mouseloc.ypos)) 54 SetFocus() 功能将输入焦点设置到指定对象或窗口上. 声明格式SUBROUTINE SetFocus(long objhandle) LIBRARY &#8220;User32.dll&#8221; 示例 SetFocus(handle(sle_1)) // handle 函数得到单行编辑框控件sle_1 的句柄 55 SetKeyboardState() 功能设置键盘的状态值0 表示相应键没有被按下 声明格式FUNCTION boolean SetKeyboardState(ref integer kbarray[256]) LIBRARY &#8220;USER32.DLL&#8221; 示例 boolean rtn rtn = SetKeyboardState(ipkey) if rtn = false then Messagebox(&#8220;操作失败&#8221;,&#8221;加载键盘状态时出错&#8221;) else Messagebox(&#8220;操作成功&#8221;,&#8221;成功完成键盘状态加载工作&#8221;) end if 56 SetPixel() 功能设置窗口上指定像素的颜色 声明格式FUNCTION ulong SetPixel(ulong hwnd, long xpos, long ypos, ulong pcol) LIBRARY &#8220;Gdi32.dll&#8221; 示例 long lx, ly ulong rtn ulong l_handle, l_device lx = 200 ly = 200 l_handle = handle(w_main) l_device = GetDC(l_handle) //得到设备上下文 rtn = GetPixel(l_device, lx, ly) //得到指定位置的像素颜色 MessageBox(&#8220;颜色&#8221;,&#8221;位置x=&#8221;+string(lx)+&#8221;,y=&#8221;+ string(ly)+&#8221;的颜色值=&#8221;+ string(rtn)) SetPixel(l_device, lx, ly, 0) //将指定位置像素的颜色设置为黑色0 57 SetThreadPriority() 功能设置线程的优先级线程的缺省优先级为0 大于0 的优先级拥有更高的优先 权优先级越大得到的CPU 时间越多但是不应该把优先级设置得过大否则将导致 鼠标停止工作 声明格式FUNCTION boolean SetThreadPriority(ulong hthread, int npriority) LIBRARY &#8220;Kernel32.dll&#8221; 示例 ulong l_handle boolean rtn l_handle = GetCurrentThread() //得到当前的优先级 rtn = SetThreadPriority(l_handle, 2) // 将线程的优先级设置为2 MessageBox(&#8220;将线程的当前优先级修改为&#8221;, string(rtn)) 58 Sleep() ???? 附录A 常用的788 Windows API 调用 附录 A 常用的 Windows API调用 788 功能睡眠指定的时间该函数执行过程中系统将不重绘屏幕该函数的作用相当 于在PowerBuilder 执行了一个For &#8230; Next 循环 声明格式SUBROUTINE Sleep(ulong milli) LIBRARY &#8220;Kernel32.dll&#8221; 示例 ulong l_delay l_delay = 5000 //5000 毫秒5 秒 Sleep(l_delay) //睡眠5 秒钟 59 SndPlaySoundA()和WaveOutGetNumDevs() 功能这两个函数结合起来使用用于播放.WAV 格式的文件 声明格式FUNCTION boolean SndPlaySoundA(string wavfile, uint flag) LIBRARY &#8220;WINMM.DLL&#8221; FUNCTION uint WaveOutGetNumDevs() LIBRARY &#8220;WINMM.DLL&#8221; 示例 uint lui_NumDevs, l_mode string ls_file l_mode = 0 ls_file = string(c:\windows\media\chimes.wav) lui_NumDevs = WaveOutGetNumDevs() IF lui_NumDevs > 0 THEN SndPlaySoundA(ls_file, l_mode) END IF 60 SwapMouseButton() 功能交换鼠标的左右按钮让鼠标按钮返回正常状态时需要再次调用该函数 声明格式FUNCTION boolean SwapMouseButton(boolean var) LIBRARY &#8220;User32.dll&#8221; 示例 boolean rtn, l_mouse rtn = SwapMouseButton(l_mouse) If l_mouse = true Then MessageBox(&#8220;交换鼠标按钮&#8221;,&#8221;左边的按钮发挥右按钮的作用&#8221;) Else MessageBox(&#8220;交换鼠标按钮&#8221;,&#8221;右边的按钮发挥左按钮的作用&#8221;) End If 61 WinExec() 功能运行指定的可执行文件 声明格式FUNCTION uint WinExec(ref string filename, uint wstyle) LIBRARY &#8220;kernel32.dll&#8221; 示例 string ls_filename uint rtn, wstyle ls_filename = &#8220;c:\windows\calc.exe&#8221; //程序名称 wstyle = 1 rtn = WinExec(ls_filename, wstyle) //运行指定程序 Messagebox(&#8220;返回值&#8221;, string(rtn)) Permalink | Comment (0) 搜索: 近期文章 自己身边的和网上整理的癌症秘方,毕竟辛苦了一年 天然染发黑老大, 黑豆+米醋 癌症患者对症食疗方 改变酸性体质的方法 治疗癌症唯一值得去尝试的方法( 近期评论 分类目录 oracle PowerBuilder 人生之道 健康之道 免费之道 国学有道 处世之道 生财有道 编程之道 网络之道 自然之道 功能 登录 文章 RSS 评论 RSS WordPress.org 12种最能补脾的食物 《黄帝内经》中的养生名言 中医如何看素食? 中医说12种食物夏日去火 人为什么会生病? 十二条宇宙法则 四点建议教你如何选择净水器 小狗钱钱教你赚钱 弟子规 想养花,先了解这18种 我们上网的目的是什么? 挖矿不如点击来的快,免费获得比特币 无线网络密码破解WPA/WPA2教程 最简单实用的号脉方法 治疗刺瘊偏方 清血的食物 溃疡性结肠炎 生男生女中药方 盘点十大垃圾食品排行榜 维生素的根本 肠道保养就是免疫保养 自然疗法 读论语做人学老子赚钱 远程桌面出错 道德经与养生 道法自然 oracle (1) PowerBuilder (5) 人生之道 (7) 健康之道 (48) 免费之道 (2) 国学有道 (3) 处世之道 (1) 生财有道 (2) 编程之道 (14) 网络之道 (25) 自然之道 (4) WP-Cumulus by Roy Tanck and Luke Morton requires Flash Player 9 or better. 链接表 Documentation Plugins Suggest Ideas Support Forum Themes WordPress Blog WordPress Planet 健康之道 编程之道 网络之道 人生之道 国学有道 免费之道 自然之道 处世之道 生财有道 oracle 关于道道网 Proudly powered by Wordpress