C++Builder から PDF ファイルを開く
2013-11-26
直感的なグラフィカルユーザーインターフェースを提供できれば、それに越したことはないのですが、機能の多いアプリケーションでは難しいものです。そこで、ユーザーにオペレーションマニュアルを納めたりするのですが、これをアプリケーションが入っているマシンから直接見れたら、便利なんじゃないの?というお話です。
余談ですが、最近3DSソフトの取扱説明書も紙1枚になって、「詳細はソフト内のマニュアル読んでくれ」というスタンスを取っていますよね。今の子供たちは、ゲームを買った帰りに、車の中でワクワクしながら取説読んだりすることは、なくなってしまうのでしょうかね。少しだけ寂しいですね。
で、それはそうと、手元に実物がなくても操作方法が分かるというのは、なかなか良いことだと思うので、実装してみようと思います。PDF だったりすると、納めるマシンに PDF リーダーを入れたり等、結構面倒だったりします。Windows ヘルプ形式とかでマニュアルを作れれば、それが一番良いのですが、当方そんな技術は持ち合わせておりません。
C++Builder で実装する時は、こんな感じです。メニューバーの[ヘルプ(H) → マニュアル(M)]操作等で表示する想定です。
//------------------------------------------------------------------------------
// [ヘルプ(H) → マニュアル(M)]のonClickイベント
//------------------------------------------------------------------------------
void __fastcall TForm_Main::Menu_Help_ManualClick(TObject *Sender) {
// ファイルパスの組み立て
UnicodeString filePath = (ExtractFilePath(Application->ExeName) + L"Manual\\マニュアル.pdf");
// ファイルの実行
HINSTANCE executeResult = ShellExecute(Form_Main->Handle, L"open", filePath.c_str(), NULL, NULL, SW_SHOW);
// ShellExecute関数は、失敗すると32以下の値が返る。
if ((int)executeResult <= 32) {
MessageBox(
Form_Main->Handle,
L"マニュアルは表示できません。\n紙媒体のマニュアルをご利用ください。",
L"エラー",
(MB_OK | MB_ICONERROR));
}
}