IronHSP の iron_ribbon_native.hsp + hspribbon.dll を使用して、
Office 風のネイティブリボン UI を HSP アプリケーションに組み込む方法を解説します。
Windows Ribbon Framework は Windows 7 以降に標準搭載されている UI コンポーネントです。 Office 2007 以降のリボンインターフェースと同じネイティブ品質で表示されます。
hspribbon.dll / hspribbon_64.dll — IronHSP プラグイン (同梱済み)iron_ribbon_native.hsp — HSP ラッパーモジュール (同梱済み)uicc.exe は Windows SDK に含まれています。
または Microsoft 公式サイトから単体でダウンロードできます。
C:\Program Files (x86)\Windows Kits\10\bin\10.0.XXXXX.0\x86\uicc.exe
複数バージョンがインストールされている場合は最新版を使用してください。
┌──────────┐ uicc.exe ┌──────────┐
│ ribbon.xml │ ──────────────→ │ ribbon.bml │ (バイナリマークアップ)
│ (XML定義) │ │ ribbon.rc │ (リソーススクリプト)
│ │ │ ribbon.h │ (C/C++ ヘッダ)
└──────────┘ └──────────┘
│
hspribbon.dll が
自動的にリソース DLL を
生成してロード
│
▼
┌──────────────┐
│ リボン表示! │
└──────────────┘
rc.exe や link.exe は不要です。
hspribbon.dll が ribbon.bml + ribbon.rc + ribbon.h を読み取り、
UpdateResource API で一時 DLL にリソースを自動埋め込みします。
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon">
<!-- コマンド定義 -->
<Application.Commands>
<Command Name="cmdNew" Id="101" LabelTitle="New" />
</Application.Commands>
<!-- ビュー定義 -->
<Application.Views>
<Ribbon>
<Ribbon.Tabs>
<Tab CommandName="cmdTabHome">
<Group CommandName="cmdGrpFile">
<Button CommandName="cmdNew" />
</Group>
</Tab>
</Ribbon.Tabs>
</Ribbon>
</Application.Views>
</Application>
| 属性 | 説明 | 例 |
|---|---|---|
Name | コマンド名 (必須、一意) | "cmdNew" |
Id | コマンド ID (整数、HSP で識別に使用) | "101" |
LabelTitle | 表示テキスト | "New" |
TooltipTitle | ツールチップのタイトル | "Create New File" |
TooltipDescription | ツールチップの説明文 | "Creates a new document." |
Keytip | キーボードショートカット | "N" |
<Command Name="cmdNew" Id="101" LabelTitle="New">
<Command.LargeImages>
<Image Source="res\new32.bmp" /> <!-- 32x32 BMP -->
</Command.LargeImages>
<Command.SmallImages>
<Image Source="res\new16.bmp" /> <!-- 16x16 BMP -->
</Command.SmallImages>
</Command>
| 要素 | 説明 | 例 |
|---|---|---|
<Button> | 通常ボタン | New, Open, Save |
<ToggleButton> | トグル (ON/OFF) | Bold, Italic |
<CheckBox> | チェックボックス | Ruler, Gridlines |
<DropDownButton> | ドロップダウンメニュー | Font Size |
<SplitButton> | 分割ボタン (ボタン + ▼) | Paste |
<DropDownColorPicker> | カラーピッカー | Font Color |
<Spinner> | 数値入力 (上下) | Font Size |
<ComboBox> | コンボボックス | Font Name |
<InRibbonGallery> | リボン内ギャラリー | Styles |
<DropDownGallery> | ドロップダウンギャラリー | Shapes |
| SizeDefinition | 説明 |
|---|---|
OneButton | ボタン 1 個 |
TwoButtons | ボタン 2 個 |
ThreeButtons | ボタン 3 個 |
ThreeButtons-OneBigAndTwoSmall | 大 1 + 小 2 |
FourButtons | ボタン 4 個 |
FiveButtons | ボタン 5 個 |
| (未指定) | 自動レイアウト |
<Ribbon.ApplicationMenu>
<ApplicationMenu>
<MenuGroup>
<Button CommandName="cmdNew" />
<Button CommandName="cmdOpen" />
<Button CommandName="cmdSave" />
</MenuGroup>
<MenuGroup>
<Button CommandName="cmdExit" />
</MenuGroup>
</ApplicationMenu>
</Ribbon.ApplicationMenu>
<Ribbon.QuickAccessToolbar>
<QuickAccessToolbar>
<QuickAccessToolbar.ApplicationDefaults>
<Button CommandName="cmdSave" />
<Button CommandName="cmdUndo" />
<Button CommandName="cmdRedo" />
</QuickAccessToolbar.ApplicationDefaults>
</QuickAccessToolbar>
</Ribbon.QuickAccessToolbar>
<DropDownColorPicker CommandName="cmdFontColor" ColorTemplate="ThemeColors" />
ColorTemplate: ThemeColors / StandardColors / HighlightColors
uicc.exe ribbon.xml ribbon.bml /header:ribbon.h /res:ribbon.rc
| 出力ファイル | 説明 |
|---|---|
ribbon.bml | バイナリマークアップ (必須) |
ribbon.rc | リソーススクリプト (STRINGTABLE + BITMAP 参照) |
ribbon.h | コマンド ID の C/C++ ヘッダ |
ribbon.bml だけでなく、ribbon.rc と ribbon.h も
同じフォルダに配置してください。hspribbon.dll がこれらを読み取って
テキストと画像を自動的にリソース DLL に埋め込みます。
#include "iron_ribbon_native.hsp"
screen 0, 1024, 600
; 初期化
ribbon_native_init
; BML ロード (.rc + .h + res/*.bmp も同じフォルダに必要)
ribbon_native_load_bml dir_cur + "\\ribbon.bml"
; イベントモード ON (メッセージ ID はユーザーが自由に設定可能)
ribbon_native_set_event_mode 1, 0x80C8
; oncmd でコマンドを受信
oncmd gosub *on_ribbon, 0x80C8
stop
*on_ribbon
cmd_id = wparam ; コマンド ID (ribbon.xml の Id 属性)
cmd_verb = lparam ; 0=Execute, 1=Preview, 2=CancelPreview
mes "CMD=" + cmd_id
return
| 命令/関数 | 説明 |
|---|---|
ribbon_native_init | Ribbon Framework 初期化 |
ribbon_native_load_bml "path" | BML ファイルからリボンをロード |
ribbon_native_load_xml "xml", "sdk_bin" | XML から自動コンパイル&ロード (uicc.exe パス指定) |
ribbon_native_set_event_mode sw, wm_id | イベント通知 ON/OFF + メッセージ ID 設定 |
ribbon_native_poll | ポーリング方式でコマンド取得 |
ribbon_native_cmd_id() | 最後のコマンド ID |
ribbon_native_cmd_verb() | 最後の verb (0/1/2) |
ribbon_native_last_int() | Toggle/Checkbox の値 |
ribbon_native_height() | リボンの高さ (px) |
ribbon_native_minimize sw | リボン最小化 (1) / 復元 (0) |
ribbon_native_set_modes mask | アプリケーションモード (32bit マスク) |
ribbon_native_set_bgcolor r,g,b | 背景色変更 |
ribbon_native_destroy | 終了処理 |
| 症状 | 原因 | 対策 |
|---|---|---|
| リボンが表示されない | BML ファイルが見つからない | フルパスで指定する |
| テキストが表示されない | .rc / .h ファイルが不足 | BML と同じフォルダに配置 |
| 画像が表示されない | BMP ファイルが見つからない | res/ フォルダに 32bit BMP を配置 |
| load_bml が -6 を返す | リソース DLL のロード失敗 | アンチウイルスの一時除外を確認 |
| タブが「Yu Gothic UI」と表示 | 古い BML を使っている | uicc で再コンパイル |