|
FPC 和 Carbon
Carbon 是Mac OS X 和 Classic Mac OS 8.1 或以上可用的程序 API . 它能用来创建完全原生的 Macintosh 程序并有 Aqua 外观. 这份文档提供一份有效的信息关于怎样在Object Pascal 软件中使用这些 API.
Pascal Bindings
Carbon bindings 位于 FPCMacOSAll 单元, FPC 的一般安装都含有它.
Carbon 手册
如果你不想用LCL组件来创建 Carbon 程序 , 那么你必须用 Carbon API 来实现. 这个小手册将展示怎样使用 CarbonAPI 函数来创建程序并用 XCode Interface Builder 来创建用户界面.
* 新建一个项目文件夹并在里面新建一个 .pas 文件, 或者你也可以用Lazarus来新建一个项目 (Project->New Project->Custom Application)
* 保存一个空文件 (对Lazarus是空项目) 然后暂时不管它.
所有的 Mac OS 图形用户界面程序必须作为 包(bundles). 包是文件夹和文件的一种特殊的集合, 它包含运行一个程序所必须的所以信息.
  * 新建一个程序包用刚才那个空 .pas 文件一样的名字. 创建一个包的脚本在这个链接: wiki.lazarus.freepascal.org/XDev_Toolkit 
(如果你正在使用 Lazarus, 你可以方便的用菜单创建它 Project Options -> Create Application Bundle);
为创建一个 GUI 程序, 需要使用 Interface Builder. 这个工具随 XCode 工具提供, 可以在 /Developer/Applications/找到. 创建 GUI 程序不是非要Interface Builder, 但 IB 是最方便的.
* 打开 Interface Builder
* 选择模版 Carbon -> Application. 将创建一个 carbon 程序模版, 包含主要的菜单和窗口.
熟悉一下Interface Builder, 它有一个 '组件面板(component palette)' 作为库 和 '对象检查器(object inspector)'作为检查器 (要打开 检查器按 cmd-shift-I 或 从主菜单 Tools->Inspector)
* 在建立的菜单上添加一个 Static Text object (Label). 添加一个控件可以简单的拖到窗口上. 双击新添加的 Static Text 改变它的标题如 'Hello World';
* 保存程序模版到项目文件夹, 名为 'main' 文件类型为 nib (3.x or 2.x 版本 for Leopard, .nib 扩展名会自动添加)
* 复制新建的 main.nib 文件到程序包. yourBundle.app/Contents/Resources/. 资源文件夹是任何 nib 文件被搜索的地方.
如果你使用 Finder 你可以用 'Show Package Content'来进入程序文件夹, 如果你使用控制台 你可以用下面的命令来复制 cp main.nib -r ./yourBundle.app/Contents/Resources/main.nib (yourBundle.app 是你的程序包的名字)
现在, 回到空的 .pas 文件 (或空的项目文件), 它是以前创建的. 写入下面的代码到 .pas
uses
MacOSAll;
var
err : OSStatus;
nibRef : IBNibRef = nil;
window : WindowRef = nil;
begin
err := noErr;
try
// 创建一个 Nib 引用 通过 nib 文件名 (不要 .nib 扩展名)
// CreateNibReference 只搜索程序包.
err := CreateNibReference(CFSTR('main'), nibRef);
if err <> noErr then Exit;
// 一旦 nib 引用被创建, 设置菜单栏. "MainMenu" 是菜单栏对象的名字
// 这个名字在InterfaceBuilder 中创建时设置的.
err := SetMenuBarFromNib(nibRef, CFSTR('MainMenu'));
if err <> noErr then Exit;
// 然后创建一个窗口. "MainWindow" 时窗口对象的名字.
//This name is set in InterfaceBuilder when the nib is created.
err := CreateWindowFromNib(nibRef, CFSTR('Window'), window);
if err <> noErr then Exit;
finally
// 我们不再需要 nib 引用.
DisposeNibReference(nibRef);
end;
// 窗口创建时隐藏了因此显示它.
ShowWindow(window);
// 运行主要的消息循环启动程序.
RunApplicationEventLoop;
end.
* 保存文件.
* 现在构建它
下面是命令行.记住你要让Free Pascal 知道 MacOSAll 文件的位置 (你可以在 /etc/fpc.cfg 文件中指定路径)
fpc yourMainFile.pas -k-framework -kCarbon
如果没有创建文件链接, 你得创建一个 或复制可执行文件 (每次重新构建程序你都要复制一次可执行文件);
cp youMainFile ./youBundle.app/Contents/MacOS/
If you're using Lazarus, you can simply select Run->Build, you can also launch the application. |
评分
-
查看全部评分
|