第35回 Internet Exolorer風にメニュー項目を追加する (タブブラウザーを作る)
![]()
今回はタブブラウザのメニューにInternet Explorerと同じような項目を追加する。項目を作るだけで実際に処理を実装するのはまだまだ先だ。
今回は一度にたくさんのメニュー項目を追加することになる。リソースエディタで1つずつ入力してもいいが、数が多いときは大変な作業になる。そこでrcファイルを直接編集して項目を追加する。
ソリューションエクスプローラーで「TabBrowser100.rc」の上で右クリックして現われるメニューから「コードの表示」を選択する。
IDR_MAINFRAME MENU
BEGIN
POPUP "ファイル(&F)"
BEGIN
MENUITEM "新しいタブ(&T)\tCtrl+T", ID_FILE_NEW
MENUITEM "タブを複製(&B)\tCtrl+K", ID_FILE_COPY_TAB
MENUITEM "新規ウインドウ(&N)\tCtrl+N", ID_FILE_NEW_WINDOW
MENUITEM "新規セッション(&I)", ID_FILE_NEW_SESSION
MENUITEM "開く(&O)...\tCtrl+O", ID_FILE_OPEN
MENUITEM "編集(&D)", ID_FILE_EDIT
MENUITEM "上書き保存(&S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "名前を付けて保存(&A)...", ID_FILE_SAVE_AS
MENUITEM "タブを閉じる(&C)\tCtrl+W", ID_WINDOW_CLOSE
MENUITEM SEPARATOR
MENUITEM "ページ設定(&U)...", ID_FILE_PRINT_SETUP
MENUITEM "印刷(&P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "プレビュー(&V)...", ID_FILE_PRINT_PREVIEW
MENUITEM SEPARATOR
POPUP "送信(&E)"
BEGIN
MENUITEM "ページを電子メールで(&P)...", ID_FILE_SEND_PAGE
MENUITEM "リンクを電子メールで(&L)...", ID_FILE_SEND_LINK
MENUITEM "ショートカットをデスクトップへ(&S)", ID_FILE_CREATE_SHORTCUT
END
MENUITEM "インポートおよびエクスポート(&I)...", ID_FILE_INPORT_EXPORT
MENUITEM SEPARATOR
MENUITEM "プロパティ(&R)", ID_FILE_PROPERTY
MENUITEM "オフライン作業(&W)", ID_FILE_OFFLINE
MENUITEM "終了(&X)", ID_APP_EXIT
END
POPUP "編集(&E)"
BEGIN
MENUITEM "切り取り(&T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "コピー(&C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "貼り付け(&P)\tCtrl+V", ID_EDIT_PASTE
MENUITEM SEPARATOR
MENUITEM "全て選択(&A)\tCtrl+A", ID_EDIT_SELECT_ALL
MENUITEM SEPARATOR
MENUITEM "このページの検索(&F)...\tCtrl+F", ID_EDIT_FIND
END
POPUP "表示(&V)"
BEGIN
POPUP "ツール バー(&T)"
BEGIN
MENUITEM "ツール バー(&T)", ID_VIEW_TOOLBAR
MENUITEM SEPARATOR
MENUITEM "ツール バーを固定する(&L)", ID_VIEW_FIXED
END
MENUITEM "クイックタブ(&Q)\tCtrl+Q", ID_VIEW_QUICKTAB
POPUP "エクスプローラー バー(&E)"
BEGIN
MENUITEM "お気に入り(&F)\tCtrl+Shift+I", ID_VIEW_FAVORITE
MENUITEM "履歴(&H)\tCtrl+Shift+H", ID_VIEW_HISTORY
MENUITEM "フィード(&D)\tCtrl+Shift+J", ID_VIEW_FEED
END
MENUITEM "ステータス バー(&S)", ID_VIEW_STATUS_BAR
MENUITEM SEPARATOR
MENUITEM "移動(&G)", ID_VIEW_GO
MENUITEM "中止(&P)\tEsc", ID_IE_STOP
MENUITEM "最新の状態に更新(&R)\tF5", ID_IE_REFRESH
MENUITEM SEPARATOR
POPUP "拡大(&Z)"
BEGIN
MENUITEM "拡大\tCtrl +", ID_VIEW_ZOOM_PLUS
MENUITEM "縮小\tCtrl -", ID_VIEW_ZOOM_MINUS
MENUITEM SEPARATOR
MENUITEM "400%", ID_VIEW_ZOOM_400
MENUITEM "200%", ID_VIEW_ZOOM_200
MENUITEM "150%", ID_VIEW_ZOOM_150
MENUITEM "125%", ID_VIEW_ZOOM_125
MENUITEM "100%", ID_VIEW_ZOOM_100
MENUITEM " 75%", ID_VIEW_ZOOM_75
MENUITEM " 50%", ID_VIEW_ZOOM_50
MENUITEM SEPARATOR
MENUITEM " カスタム...", ID_VIEW_ZOOM_CUSTOM
END
POPUP "文字の大きさ(&X)"
BEGIN
MENUITEM "最大(&G)", ID_VIEW_CHAR_MAX
MENUITEM "大(&L)", ID_VIEW_CHAR_LARGE
MENUITEM "中(&M)", ID_VIEW_CHAR_MIDDLE
MENUITEM "小(&S)", ID_VIEW_CHAR_SMALL
MENUITEM "最小(&A)", ID_VIEW_CHAR_MIN
END
POPUP "エンコード(&D)"
BEGIN
MENUITEM "自動選択", ID_VIEW_ENCODE_AUTO
MENUITEM SEPARATOR
MENUITEM SEPARATOR
MENUITEM "ドキュメントの方向 - 左から右", ID_VIEW_ENCODE_TO_RIGHT
MENUITEM "ドキュメントの方向 - 右から左", ID_VIEW_ENCODE_TO_LEFT
END
POPUP "スタイル(&Y)"
BEGIN
MENUITEM "スタイルなし(&N)", ID_VIEW_STYLE_NONE
MENUITEM "既定のスタイル(&D)", ID_VIEW_STYLE_DEFAULT
END
MENUITEM "カーソル ブラウズ(&B)\tF7", ID_VIEW_CURSOR_BROWSE
MENUITEM SEPARATOR
MENUITEM "ソース(&C)", ID_VIEW_SOURCE
MENUITEM "セキュリティ報告(&S)", ID_VIEW_SECURITY_REPORT
MENUITEM "インターナショナル Web サイト アドレス(&I)", ID_VIEW_DOMAIN
MENUITEM "Web ページのプライバシー ポリシー(&V)...", ID_VIEW_PRIVACY_POLICY
MENUITEM "全画面表示(&F)\tF11", ID_VIEW_FULL_SCREEN
END
POPUP "ウインドウ(&W)"
BEGIN
MENUITEM "閉じる(&C)\tCtrl+F4", ID_WINDOW_CLOSE
MENUITEM "全て閉じる(&A)", ID_WINDOW_CLOSE_ALL
END
POPUP "お気に入り(&A)"
BEGIN
MENUITEM "dummy", ID_FAVORITE_DUMMY
MENUITEM "お気に入りに追加(&A)...", ID_IE_ADDFAVORITE
MENUITEM "お気に入りバーに追加(&B)", ID_FAVORITE_ADD_TO_BAR
MENUITEM "現在の全てのタブをお気に入りに追加(&T)...", ID_FAVORITE_ADD_ALLTAB
MENUITEM SEPARATOR
MENUITEM "お気に入りの整理(&O)...", ID_IE_ORGANIZE_FAVORITE
MENUITEM SEPARATOR
END
POPUP "ツール(&T)"
BEGIN
MENUITEM "閲覧の履歴の削除(&D)...\tCtrl+Shift+Del", ID_TOOL_CLEAR_HISTORY
MENUITEM "InPrivate ブラウズ(&I)\tCtrl+Shift+P", ID_TOOL_INPRIVATE_BROWSE
MENUITEM "接続の問題を診断(&C)...", ID_TOOL_CHECK_NETSTAT
MENUITEM "最終閲覧セッションを再度開く(&S)", ID_TOOL_OPEN_LAST_SESSION
MENUITEM SEPARATOR
MENUITEM "InPrivate フィルター\tCtrl+Shift+F", ID_TOOL_INPRIVATE_FILTER
MENUITEM "InPrivate フィルター設定(&S)", ID_TOOL_INPRIVATE_FILTER_OPTION
MENUITEM SEPARATOR
POPUP "ポップアップ ブロック(&P)"
BEGIN
MENUITEM "無効にする(&B)", ID_TOOL_POPUP_DISABLE
MENUITEM "設定(&P)...", ID_TOOL_POPUP_OPTION
END
POPUP "SmartScreen フィルター機能(&T)"
BEGIN
MENUITEM "この Web サイトを確認する(&C)", ID_TOOL_CHECK_THIS_SITE
MENUITEM "SmartScreen フィルター機能を無効にする(&F)...", ID_TOOL_SMARTSCREEN_DISABLE
MENUITEM "安全でない Web サイトを報告する(&R)", ID_TOOL_SEND_REPORT
END
MENUITEM "アドオンの管理(&A)", ID_TOOL_MANAGE_ADDON
MENUITEM SEPARATOR
MENUITEM "このフィードの購読(&F)...", ID_TOOL_FEED_ADD
MENUITEM "フィード探索(&E)...", ID_TOOL_FEED_FIND
MENUITEM "Windows Update(&U)", ID_TOOL_WINDOWS_UPDATE
MENUITEM SEPARATOR
MENUITEM "開発者ツール(&L)\tF12", ID_TOOL_DEVELOP
MENUITEM SEPARATOR
MENUITEM "インターネット オプション(&O)", ID_TOOL_INTERNET_OPTION
END
POPUP "ヘルプ(&H)"
BEGIN
MENUITEM "バージョン情報 TabBrowser100(&A)...", ID_APP_ABOUT
END
END
#define IDD_ABOUTBOX 100 #define IDR_MAINFRAME 128 #define IDM_TAB 201 #define ID_WINDOW_CLOSE 32772 #define ID_WINDOW_CLOSE_ALL 32773 #define ID_IE_BACK 32775 #define ID_IE_NEXT 32776 #define ID_IE_STOP 32777 #define ID_IE_REFRESH 32778 //#define ID_32779 32779 //■削除 //#define ID_32780 32780 //■削除 //#define ID_32781 32781 //■削除 #define ID_FAVORITE_DUMMY 32782 //#define ID_32783 32783 //■削除 //#define ID_32784 32784 //■削除 #define ID_IE_ORGANIZE_FAVORITE 32785 #define ID_IE_ADDFAVORITE 32786 //#define ID_BUTTON32787 32787 //■削除 #define ID_FAVORITE_FIRST 34000 #define ID_FAVORITE_LAST 54000
#define ID_FILE_COPY_TAB 32787 #define ID_FILE_NEW_WINDOW 32788 #define ID_FILE_NEW_SESSION 32789 #define ID_FILE_EDIT 32790 #define ID_FILE_SEND_PAGE 32791 #define ID_FILE_SEND_LINK 32792 #define ID_FILE_CREATE_SHORTCUT 32793 #define ID_FILE_INPORT_EXPORT 32794 #define ID_FILE_PROPERTY 32795 #define ID_FILE_OFFLINE 32796 #define ID_VIEW_FIXED 32797 #define ID_VIEW_QUICKTAB 32798 #define ID_VIEW_FAVORITE 32799 #define ID_VIEW_HISTORY 32800 #define ID_VIEW_FEED 32801 #define ID_VIEW_GO 32802 #define ID_VIEW_ZOOM_PLUS 32803 #define ID_VIEW_ZOOM_MINUS 32804 #define ID_VIEW_ZOOM_400 32805 #define ID_VIEW_ZOOM_200 32806 #define ID_VIEW_ZOOM_150 32807 #define ID_VIEW_ZOOM_125 32808 #define ID_VIEW_ZOOM_100 32809 #define ID_VIEW_ZOOM_75 32810 #define ID_VIEW_ZOOM_50 32811 #define ID_VIEW_ZOOM_CUSTOM 32812 #define ID_VIEW_CHAR_MAX 32813 #define ID_VIEW_CHAR_LARGE 32814 #define ID_VIEW_CHAR_MIDDLE 32815 #define ID_VIEW_CHAR_SMALL 32816 #define ID_VIEW_CHAR_MIN 32817 #define ID_VIEW_ENCODE_AUTO 32818 #define ID_VIEW_ENCODE_TO_RIGHT 32819 #define ID_VIEW_ENCODE_TO_LEFT 32820 #define ID_VIEW_STYLE_NONE 32821 #define ID_VIEW_STYLE_DEFAULT 32822 #define ID_VIEW_CURSOR_BROWSE 32823 #define ID_VIEW_SOURCE 32824 #define ID_VIEW_SECURITY_REPORT 32825 #define ID_VIEW_DOMAIN 32826 #define ID_VIEW_PRIVACY_POLICY 32827 #define ID_VIEW_FULL_SCREEN 32828 #define ID_FAVORITE_ADD_TO_BAR 32829 #define ID_FAVORITE_ADD_ALLTAB 32830 #define ID_TOOL_CLEAR_HISTORY 32831 #define ID_TOOL_INPRIVATE_BROWSE 32832 #define ID_TOOL_CHECK_NETSTAT 32833 #define ID_TOOL_OPEN_LAST_SESSION 32834 #define ID_TOOL_INPRIVATE_FILTER 32835 #define ID_TOOL_INPRIVATE_FILTER_OPTION 32836 #define ID_TOOL_POPUP_DISABLE 32837 #define ID_TOOL_POPUP_OPTION 32838 #define ID_TOOL_CHECK_THIS_SITE 32839 #define ID_TOOL_SMARTSCREEN_DISABLE 32840 #define ID_TOOL_SEND_REPORT 32841 #define ID_TOOL_MANAGE_ADDON 32842 #define ID_TOOL_FEED_ADD 32843 #define ID_TOOL_FEED_FIND 32844 #define ID_TOOL_WINDOWS_UPDATE 32845 #define ID_TOOL_DEVELOP 32846 #define ID_TOOL_INTERNET_OPTION 32847
![]()
手動でリソースIDを編集するときに一番気をつけなければいけないのが、APSTUDIO_INVOKEDで囲まれた部分の定義だ。
ここにはリソースエディタで新しくIDを作るときに、次の新しいIDで利用する番号が保存されている。ここの編集を忘れると、違う名前で同じ番号のIDがリソースエディタによって生成されてしまう。
新しく生成したIDのうちの最大の値よりも1つ大きい値を今回の場合は「_APS_NEXT_COMMAND_VALUE」を「32848」として定義しておく。#ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 202 #define _APS_NEXT_COMMAND_VALUE 32848 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
今回のメニュー項目の追加では、キーボードショートカットを無視した。次回は今回追加したメニュー項目のキーボードショートカットを設定する。

