日期:2011-03-22 16:16:00 来源:本站整理
编写回调函数[Java编程]
本文“编写回调函数[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
有些Win32 API函数要求将一个函数指针作为自己的参数利用.Windows API函数随后便可以调用自变量函数(普通是在今后发生特定的事件时).这一技术就叫作“回调函数”.回调函数的例子包含窗口进程以及我们在打印历程中设置的回调(为后台打印程序供应回调函数的地址,使其能更新状况,并在必要的时刻中止打印).
另一个例子是API函数EnumWindows(),它能列举目前系统内全部顶级窗口.EnumWindows()要求获得一个函数指针作为自己的参数,然后搜索由Windows内部保护的一个列表.关于列表内的每个窗口,它城市调用回调函数,将窗口句柄作为一个自变量传给回调.
为了在Java里到达一样的目的,必须利用com.ms.dll包里的Callback类.我们从Callback里担当,并撤消callback().这个办法只能接近int参数,并会返回int或void.办法签名和具体的实施取决于利用这个回调的Windows API函数.
目前,我们要举行的全部工作就是成立这个Callback衍生类的一个实例,并将其作为函数指针传送给API函数.随后,J/Direct会帮忙我们自动完成剩余的工作.
下面这个例子调用了Win32 API函数EnumWindows();EnumWindowsProc类里的callback()办法会获得每个顶级窗口的句柄,获得标题文字,并将其打印到掌握台窗口.
对sleep()的调用答应窗口进程在main()退出前完成.import com.ms.dll.*; import com.ms.win32.*; class EnumWindowsProc extends Callback { public boolean callback(int hwnd, int lparam) { StringBuffer text = new StringBuffer(50); User32.GetWindowText( hwnd, text, text.capacity()+1); if(text.length() != 0) System.out.println(text); return true; // to continue enumeration. } } public class ShowCallback { public static void main(String args[]) throws InterruptedException { boolean ok = User32.EnumWindows( new EnumWindowsProc(), 0); if(!ok) System.err.println("EnumWindows failed."); Thread.currentThread().sleep(3000); } }
以上是“编写回调函数[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:<b>其他J/Direct特点</b>
- ·下一篇文章:堆积(Marshaling)
- ·中查找“编写回调函数”更多相关内容
- ·中查找“编写回调函数”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论