当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 首先申明:我是菜鸟,我只不过想把困绕了我很长时间的问题的解决方案发表出来,免得以后我又忘记,同时给还不知道这些小知识的同僚一些帮助。
 

 

 ·去掉twebbrowser的滚动条    »显示摘要«
    摘要:参见以下代码: var form1 : tform; hookid : thandle; disablerbutton : boolean; implementation function mouseproc(ncode: integer; wparam, lparam: longint): longint; stdcall; function getclassnameenh(handle:......
    摘要:综观现有的rad工具——microsoft的visual basic、sybase的powerbuilder及inprise的delphi,它们都提供了相应的数据库控件。软件开发人员利用这些控件可以有效、方便地实施数据库编程,但编写高效及功能强大的数据库应用软件应该直接、动态地利用数据库管理系统的sql功能。   下例的程序是在delphi 4.0上开发的一个相对简单的人事管理软件的一部分,它......


如何控制其他程序窗体上的窗口控件
首先申明:我是菜鸟,我只不过想把困绕了我很长时间的问题的解决方案发表出来,免得以后我又忘记,同时给还不知道这些小知识的同僚一些帮助.各位不要笑我的浅薄.同时为了表示我的低级,我会很罗嗦的讲一些基本的东西,这些都是我的理解,很不准确.

【程序编程相关:在Delphi中实现动态字幕

【推荐阅读:开发安全稳固的分布式多层应用系统

用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是回调函数.我的理解是这样的: 【扩展信息:Delphi中ActionList组件在

回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的.但是什么时候被调用却不知道了.回调函数一般是按照调用者的要求定义好参数与返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数.所以很多人打比方,说回调函数还真有点像您随身带的bp机:告诉别人号码,在它有事情时call您!

所以一个回调函数写出来之后,一定有个注册的动作,就是告诉调用者,你怎么样找到我写的函数.某些windows api 函数会要求以回调函数地址作为其参数之一,例如settimer .linedda .enumobjects,以及我们下面要用到的enumwindows.

在delphi里声明一个回调函数的格式很简单,例如:

function enumwindowsproc(ahwnd:longint;lparam:longint):boolean;stdcall;

首先是函数名称可以随便乱取,但函数参数的类型一般不得乱来,其顺序,数据类型等都有规定的,因为这些都是让其他程序调用的,他们已经规定好了的,但参数名称可以随便乱叫.注意后面一定要带上“stdcall”,

stdcall是标准调用,也就是说采用标准windows参数传递方式来调用函数.

编写函数体就很简单了,利用传递过来的参数就可以了,只要记住,这些参数是别人送给你的,你只要知道这些参数代表了什么意思.

再看个向调用者注册回调函数入口地址的函数.

function enumwindows(lpenumfunc: tfnwndenumproc; lparam: lparam): bool; stdcall;

tfnwndenumproc其实就是指针类型.其中的lpenumfunc就是回调函数的入口地址了.

下面是调用enumwindows的格式:


...   下一页
 ·画动态多边型    »显示摘要«
    摘要:type tptarray = array[0..0] of tpoint; pptarray = ^tptarray; procedure drawdynamicpolyarray(numpoints : integer; canvas : tcanvas); var p : pptarray; i : integer; begin {$ifopt r+} {......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE