- 写在前面的话
- 引言
- 第 1 章 对象入门
- 第 2 章 一切都是对象
- 第 3 章 控制程序流程
- 第 4 章 初始化和清除
- 第 5 章 隐藏实施过程
- 第 6 章 类再生
- 第 7 章 多形性
- 第 8 章 对象的容纳
- 第 9 章 违例差错控制
- 第 10 章 Java IO 系统
- 第 11 章 运行期类型鉴定
- 第 12 章 传递和返回对象
- 第 十三 章 创建窗口和程序片
- 第 14 章 多线程
- 第 15 章 网络编程
- 第 16 章 设计范式
- 第 17 章 项目
- 附录 A 使用非 JAVA 代码
- 附录 B 对比 C++和 Java
- 附录 C Java 编程规则
- 附录 D 性能
- 附录 E 关于垃圾收集的一些话
- 附录 F 推荐读物
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
A.3.2 com.ms.win32 包
Win32 API 的体积相当庞大——包含了数以千计的函数、常数以及数据类型。当然,我们并不想将每个 Win32 API 函数都写成对应 Java 形式。微软考虑到了这个问题,发行了一个 Java 包,可通过 J/Direct 将 Win32 API 映射成 Java 类。这个包的名字叫作 com.ms.win32。安装 Java SDK 2.0 时,若在安装选项中进行了相应的设置,这个包就会安装到我们的类路径中。这个包由大量 Java 类构成,它们完整再现了 Win32 API 的常数、数据类型以及函数。包容能力最大的三个类是 User32.class,Kernel.class 以及 Gdi32.class。它们包含的是 Win32 API 的核心内容。为使用它们,只需在自己的 Java 代码里导入即可。前面的 ShowMsgBox 示例可用 com.ms.win32 改写成下面这个样子(这里也考虑到了用更恰当的方式使用 UnsatisfiedLinkError):
import com.ms.win32.*; public class UseWin32Package { public static void main(String args[]) { try { User32.MessageBeep( winm.MB_ICONEXCLAMATION); User32.MessageBox(0, "Created by the MessageBox() Win32 func", "Thinking in Java", winm.MB_OKCANCEL | winm.MB_ICONEXCLAMATION); } catch(UnsatisfiedLinkError e) { System.out.println("Can’t link Win32 API"); System.out.println(e); } } }
Java 包是在第一行导入的。现在,可在不进行其他声明的前提下调用 MessageBeep() 和 MessageBox() 函数。在 MessageBeep() 里,我们可看到包导入时也声明了 Win32 常数。这些常数是在大量 Java 接口里定义的,全部命名为 winx(x 代表欲使用之常数的首字母)。
写作本书时,com.ms.win32 包的开发仍未正式完成,但已可堪使用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论