超级菜鸟问题:(书中的PASCAL源程序怎么样才能在DELPHI中调用

超级菜鸟问题:(书中的PASCAL源程序怎么样才能在DELPHI中调用,第1张

你直接建立一个dpr文件,内容就是你的pascal法度榜样,然后用Delphi打开就可以了。或者钠揭捉择菜单File-->New-->Console

Application就可以了。

按F9后会自动编译,你可以发现程序所在文件夹下多了个同名exe文件,那个就是对应的应用程序 ,附加一句,不管是tp,fp,laz(不会拼),还是delphi都能对pas编译只不过方式不同,像fp是f9,delphi是ctrl+f9,其他的忘了,反正一定能编译,否则咋运行的。。

该程序演示了如何用鼠标来获得任何像素的RGB颜色。该程序使用了计时器,间隔设置为001秒来捕捉事件,使用了GetPixel , GetCursorPos 和GetDC WinAPI调用,来获得屏幕上任何地方的像素的颜色。

option Explicit

'在表单中加入计时器,使用鼠标移动到屏幕上任何一处,RGB颜色就会显示在表单中的Caption中

'

private Type POINTAPI

x as Long

y as Long

End Type

'

private Declare Function GetPixel Lib "gdi32" (byval hdc as Long, _

byval x as Long, byval y as Long) as Long

private Declare Function GetCursorPos Lib "user32" (lpPoint as POINTAPI) as Long

private Declare Function GetWindowDC Lib "user32" (byval hwnd as Long) as Long

'

private Sub Form_Load()

Timer1Interval = 100

End Sub

'

private Sub Timer1_Timer()

Dim tPOS as POINTAPI

Dim sTmp as string

Dim lColor as Long

Dim lDC as Long

'

lDC = GetWindowDC(0)

Call GetCursorPos(tPOS)

lColor = GetPixel(lDC, tPOSx, tPOSy)

Label2BackColor = lColor

'

sTmp = Right$("000000" & Hex(lColor), 6)

Caption = "R:" & Right$(sTmp, 2) & " G:" & mid$(sTmp, 3, 2) & " B:" & Left$(sTmp, 2)

End Sub

至于获取当前窗口,可以使用

Public Declare Function GetForegroundWindow Lib "user32" () As Long

获取当前活动窗体的句柄,再使用GetWindowText的API能获取到相应的标题啦!

Public Declare Function GetForegroundWindow Lib "user32" () As Long

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_GETTEXT = &HD

Public Function GetWin() As String

Dim tmp As Long

Dim iLen As Long

Dim Txt As String

tmp = GetForegroundWindow

Txt = String(255, Chr(0))

iLen = SendMessage(tmp, WM_GETTEXT, Len(Txt), ByVal Txt)

Txt = Left(Txt, iLen)

GetWin=Txt

End Function

以上代码是获取当前窗体的标题代码!(这里没使用GetWindowText的API)

参考资料:

>

对于普通的C函数参数是自右至左传递的,而根据PASCAL调用约定,参数是自左至右传递的。下例是一个普通的C函数:

int regular_func(int,char,long);

根据普通C函数的调用约定,函数参数入栈时的顺序为自右至左,因此,在调用regular()函数时,其参数的入栈顺序如下所示:longchar·int当regular_func()函数返回时,调用regular_func()函数的函数负责恢复栈。

下例是一个用PASCAL修饰符说明的函数:

int PASCAL pascal_func(int,char ,long);

根据PASCAL调用约定,函数参数入栈时的顺序为自左至右,因此,在调用‘pascal—func()函数时,其参数的入栈顺序如下所示:intchar long当pascal_func()函数返回时,调用pascal_func()函数的函数负责恢复栈指针。

采用PASCAL调用约定的函数比普通C函数的效率要高一些——前者的函数调用要稍快一些。MicrosoftWindows就是一个采用PASCAL调用约定的 *** 作环境的例子,WindowsSDK中有数百个用PASCAL修饰符说明的函数。

当Windows的第一个版本于80年代末期编写成功时,使用PASCAL修饰符能明显提高程序的执行速度。现在,计算机的运行速度已经相当快,PASCAL修饰符对程序运行速度的作用已经很小了。事实上,Microsoft在其WindowsNT *** 作系统中已经放弃了PASCAL调用约定。

在大多数情况下,采用PASCAL调用约定对程序的运行速度几乎没有明显的作用,因此,采用普通C函数的调用约定完全能满足编程要求。

以上就是关于超级菜鸟问题:(书中的PASCAL源程序怎么样才能在DELPHI中调用全部的内容,包括:超级菜鸟问题:(书中的PASCAL源程序怎么样才能在DELPHI中调用、pascal程序怎么用、pascal里面怎样调用api函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9781019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存