ホームページ>開発ツール>Xojo / Real Studio Trial and Error・標準のヘルプビューアを利用する・Cocoa編
Xojo / Real Studio Trial and Error
目次
標準のヘルプビューアを利用する・Cocoa編
はじめに
標準のヘルプビューアを利用する話題の続きです。
Cocoaビルドでは、一部Carbonビルドとは異なる方法で実装する必要があるので、纏めておきました。
とは言え、変更箇所はアプリケーションのメニュー周りのみで、それ以外はCarbonビルドと同じです。(こちらのページの「アプリケーション側の実装」項目のみ、下記の項目と差し替えてご覧下さい。)
なお、今回の検証には、Xojo 2014 Release 2を用いています。(Mac mini + OS X 10.9.4)
基本方針
Carbonビルドと異なり、Cocoaビルドではヘルプメニューの自動追加が行われません。
Cocoaの仕組み上の話なのか、単にReal Studio(Xojo)側が対応していないのかは確認できていません。ここで参考になるのはXcodeです。
XcodeでCocoa Applicationを新規作成すると、ヘルプを呼び出す機能がデフォルトで実装済となっています。(ただし、Help Book自体は存在していないので、メニューを選択するとメッセージが表示されますが…)
MainMenu.xibを見ると、当該メニュー項目には「showHelp:」メソッドが紐づけられています。
なので、showHelp:メソッドを自分で呼び出す方法を試してみることにしました。
参考サイト(1):NSApplication Class Reference
アプリケーション側の実装
アプリケーションがHelp Bookを利用するためには、以下の通り実装します。
- MainMenuBarに「ヘルプ」メニューを追加し、そこに「<アプリケーション名> ヘルプ」メニュー項目を追加する。
- Appクラスにメニューハンドラを追加し、メニュー項目名を上述の「<アプリケーション名> ヘルプ」メニューに対応したものにする。
- メニューハンドラの中身を以下の通り記述する。
注)IDEからの実行では、Help Book自体とInfo.plist追加分が存在しないので、メニューを選択してもメッセージが表示される。// 文字列を指定してクラスオブジェクトを取得する。最初に一回宣言しておけばよい。 Declare Function NSClassFromString Lib "Cocoa" (aClassName As CFStringRef) As Ptr // NSApplicationオブジェクトを取得 Dim sA As Ptr = NSClassFromString("NSApplication") // NSApplicationのセレクタであるsharedApplicationを宣言 Declare Function SharedApplication Lib "Cocoa" Selector "sharedApplication" (receiver As Ptr) As Ptr // sharedApplicationセレクタの処理(引数にはメッセージの受け手であるsAを指定し、戻り値は同じくsAを指定。) sA = SharedApplication(sA) // NSApplicationのセレクタであるshowHelp:を宣言 Declare Sub showHelp Lib "Cocoa" Selector "showHelp:" (receiver As Ptr, sender As Ptr) // showHelp:セレクタの処理(HelpViewerの起動) showHelp(sA, nil) Return True
- 他にヘルプメニュー項目があれば、追加する。
結果
実行してみましたが、とりあえず、動作しているようです。
不具合が発生しないか等、詳細はもう少し動かして、様子を見た方がいいかもしれません。
お世話になったサイト
貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)
参考サイト(1):NSApplication Class Reference
更新履歴
2014.09.06 新規作成
[Home] [MacSoft] [Donation] [History] [Privacy Policy] [Affiliate Policy]