📄 cmenudrawer.cpp
字号:
// $Id: CMenuDrawer.cpp,v 1.35 2005/04/22 21:42:46 genta Exp $
/*! @file
@brief メニュー管理&表示
@author Norio Nakatani
$Revision: 1.35 $
*/
/*
Copyright (C) 1998-2001, Norio Nakatani
Copyright (C) 2002, MIK
Copyright (C) 2003, MIK
This source code is designed for sakura editor.
Please contact the copyright holder to use this code for other purpose.
*/
#include "CMenuDrawer.h"
#include "sakura_rc.h"
#include "global.h"
#include "debug.h"
#include "CSplitBoxWnd.h"
#include "CEditWnd.h"
#include "etc_uty.h"
// Jan. 29, 2002 genta
// Win95/NTが納得するsizeof( MENUITEMINFO )
// これ以外の値を与えると古いOSでちゃんと動いてくれない.
const int SIZEOF_MENUITEMINFO = 44;
void FillSolidRect( HDC hdc, int x, int y, int cx, int cy, COLORREF clr)
{
// ASSERT_VALID(this);
// ASSERT(m_hDC != NULL);
RECT rect;
::SetBkColor( hdc, clr );
::SetRect( &rect, x, y, x + cx, y + cy );
::ExtTextOut( hdc, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL );
}
// @date 2002.2.17 YAZAKI CShareDataのインスタンスは、CProcessにひとつあるのみ。
CMenuDrawer::CMenuDrawer()
{
/* 共有データ構造体のアドレスを返す */
m_pShareData = CShareData::getInstance()->GetShareData();
m_nMenuItemNum = 0;
m_nMenuHeight = 0;
m_hFontMenu = NULL;
m_hFontMenuUndelLine = NULL;
//@@@ 2002.01.03 YAZAKI m_tbMyButtonなどをCShareDataからCMenuDrawerへ移動したことによる修正。 /* ツールバーのボタン TBBUTTON構造体 */
/* ツールバーのボタン TBBUTTON構造体 */
/*
typedef struct _TBBUTTON {
int iBitmap; // ボタン イメージの 0 から始まるインデックス
int idCommand; // ボタンが押されたときに送られるコマンド
BYTE fsState; // ボタンの状態--以下を参照
BYTE fsStyle; // ボタン スタイル--以下を参照
DWORD dwData; // アプリケーション-定義された値
int iString; // ボタンのラベル文字列の 0 から始まるインデックス
} TBBUTTON;
*/
SetTBBUTTONVal( &m_tbMyButton[0], 0, 0, 0, TBSTYLE_SEP, 0, 0 ); //セパレータ
#if 0
2002/04/26 無用な汎用性は排除。
struct TBUTTONDATA {
int idCommand;
BYTE fsState;
BYTE fsStyle;
DWORD dwData;
int iString;
};
#endif
// キーワード:アイコン順序(アイコンインデックス)
// Sept. 16, 2000 Jepro note: アイコン登録メニュー
// 以下の登録はツールバーだけでなくアイコンをもつすべてのメニューで利用されている
// 数字はビットマップリソースのIDB_MYTOOLに登録されているアイコンの先頭からの順番のようである
// アイコンをもっと登録できるように横幅を16dotsx218=2048dotsに拡大
// 縦も15dotsから16dotsにして「プリンタ」アイコンや「ヘルプ1」の、下が欠けている部分を補ったが15dotsまでしか表示されないらしく効果なし
// →
// Sept. 17, 2000 縦16dot目を表示できるようにした
// 修正したファイルにはJEPRO_16thdotとコメントしてあるのでもし間違っていたらそれをキーワードにして検索してください(Sept. 28, 2000現在 6箇所変更)
// IDB_MYTOOLの16dot目に見やすいように横16dotsづつの区切りになる目印を付けた
//
// Sept. 16, 2000 見やすいように横に20個(あるいは32個)づつに配列しようとしたが配列構造を変えなければうまく格納できないので
// それを解決するのが先決(→げんた氏改修版ur3β13で解決)
//
// Sept. 16, 2000 JEPRO できるだけ系ごとに集まるように順番を大幅に入れ替えた それに伴いCShareData.cppで設定している初期設定値も変更
// Oct. 22, 2000 JEPRO アイコンのビットマップリソースの2次元配置が可能になったため根本的に配置転換した
// ?配置の基本は「コマンド一覧」に入っている機能(コマンド)順 なお「コマンド一覧」自体は「メニューバー」の順におおよそ準拠している
// ?アイコンビットマップファイルには横32個X13段あるが有効にしてあるのは11段まで(12段目は基本的に作業用, 13段目は試作品など保管用)
// ?メニューに属する系および各系の段との関係は次の通り(Oct. 22, 2000 現在):
// ファイル----- ファイル操作系 (1段目32個: 1-32)
// 編集--------- 編集系 (2段目32個: 33-64)
// 移動--------- カーソル移動系 (3段目32個: 65-96)
// 選択--------- 選択系 (4段目32個: 97-128)
// + 矩形選択系 (5段目32個: 129-160) //(注. 矩形選択系のほとんどは未実装)
// + クリップボード系 (6段目24個: 161-184)
// ★挿入系 (6段目残りの8個: 185-192)
// 変換--------- 変換系 (7段目32個: 193-224)
// 検索--------- 検索系 (8段目32個: 225-256)
// ツール------- モード切り替え系 (9段目4個: 257-260)
// + 設定系 (9段目次の16個: 261-276)
// + マクロ系 (9段目最後の12個: 277-288)
// + 外部マクロ (12段目12個: 353-372)
// + カスタムメニュー (10段目32個: 289-320)
// ウィンドウ--- ウィンドウ系 (11段目22個: 321-342)
// ヘルプ------- 支援 (11段目残りの10個: 343-352)
// ★その他 (12段目残りの10個: 373-384)
// 注1.「挿入系」はメニューでは「編集」に入っている
// 注2.「その他」はメニューには入っていないものを入れる (現在何もないので12段目を設定してない)
// 注3.「コマンド一覧」で敢えて重複していれてあるコマンドはその「本家」の方に配置した
// 注4.「コマンド一覧」に入ってないコマンドもわかっている範囲で位置予約にしておいた
// 注5. F_DISABLE は未定義用(ダミーとしても使う)
// 注6. ユーザー用に確保された場所は特にないので各段の空いている後ろの方を使ってください。
int /* TBUTTONDATA */ tbd[] = {
/* ファイル操作系(1段目32個: 1-32) */
/* 1 */ F_FILENEW /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //新規作成
/* 2 */ F_FILEOPEN /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //開く
/* 3 */ F_FILESAVE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //上書き保存
/* 4 */ F_FILESAVEAS_DIALOG /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //名前を付けて保存 //Sept. 18, 2000 JEPRO 追加
/* 5 */ F_FILECLOSE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //閉じて(無題) //Oct. 17, 2000 jepro 「ファイルを閉じる」というキャプションを変更
/* 6 */ F_FILECLOSE_OPEN /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //閉じて開く
/* 7 */ F_FILE_REOPEN_SJIS /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //SJISで開き直す
/* 8 */ F_FILE_REOPEN_JIS /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //JISで開き直す
/* 9 */ F_FILE_REOPEN_EUC /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //EUCで開き直す
/* 10 */ F_FILE_REOPEN_UNICODE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //Unicodeで開き直す
/* 11 */ F_FILE_REOPEN_UTF8 /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //UTF-8で開き直す
/* 12 */ F_FILE_REOPEN_UTF7 /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //UTF-7で開き直す
/* 13 */ F_PRINT /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //印刷
/* 14 */ F_PRINT_PREVIEW /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //印刷プレビュー
/* 15 */ F_PRINT_PAGESETUP /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //印刷ページ設定 //Sept. 21, 2000 JEPRO 追加
/* 16 */ F_OPEN_HfromtoC /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //同名のC/C++ヘッダ(ソース)を開く //Feb. 7, 2001 JEPRO 追加
/* 17 */ F_OPEN_HHPP /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //同名のC/C++ヘッダファイルを開く //Feb. 9, 2001 jepro「.cまたは.cppと同名の.hを開く」から変更
/* 18 */ F_OPEN_CCPP /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //同名のC/C++ソースファイルを開く //Feb. 9, 2001 jepro「.hと同名の.c(なければ.cpp)を開く」から変更
/* 19 */ F_ACTIVATE_SQLPLUS /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //Oracle SQL*Plusをアクティブ表示 */ //Sept. 20, 2000 JEPRO 追加
/* 20 */ F_PLSQL_COMPILE_ON_SQLPLUS /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //Oracle SQL*Plusで実行 */ //Sept. 17, 2000 jepro 説明の「コンパイル」を「実行」に統一
/* 21 */ F_BROWSE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ブラウズ
/* 22 */ F_PROPERTY_FILE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ファイルのプロパティ//Sept. 16, 2000 JEPRO mytool1.bmpにあった「ファイルのプロパティ」アイコンをIDB_MYTOOLにコピー
/* 23 */ F_READONLY /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //読み取り専用
/* 24 */ F_FILE_REOPEN_UNICODEBE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //UnicodeBEで開き直す // Moca, 2002/05/26 追加
/* 25 */ F_FILEOPEN_DROPDOWN /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //開く(ドロップダウン)
/* 26 */ F_FILE_REOPEN /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //開きなおす
/* 27 */ F_EXITALL /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //サクラエディタの全終了 //Dec. 27, 2000 JEPRO 追加
/* 28 */ F_FILESAVECLOSE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //保存して閉じる Feb. 28, 2004 genta
/* 29 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 30 */ F_FILESAVEALL /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //全て上書き保存 Jan. 24, 2005 genta
/* 31 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 32 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 編集系(2段目32個: 32-64) */
/* 33 */ F_UNDO /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //元に戻す(Undo)
/* 34 */ F_REDO /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //やり直し(Redo)
/* 35 */ F_DELETE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //削除
/* 36 */ F_DELETE_BACK /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル前を削除
/* 37 */ F_WordDeleteToStart /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //単語の左端まで削除
/* 38 */ F_WordDeleteToEnd /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //単語の右端まで削除
/* 39 */ F_WordDelete /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //単語削除
/* 40 */ F_WordCut /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //単語切り取り
/* 41 */ F_LineDeleteToStart /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行頭まで削除(改行単位)
/* 42 */ F_LineDeleteToEnd /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行末まで削除(改行単位)
/* 43 */ F_LineCutToStart /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行頭まで切り取り(改行単位)
/* 44 */ F_LineCutToEnd /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行末まで切り取り(改行単位)
/* 45 */ F_DELETE_LINE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行削除(折り返し単位)
/* 46 */ F_CUT_LINE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行切り取り(改行単位)
/* 47 */ F_DUPLICATELINE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //行の二重化(折り返し単位)
/* 48 */ F_INDENT_TAB /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //TABインデント
/* 49 */ F_UNINDENT_TAB /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //逆TABインデント
/* 50 */ F_INDENT_SPACE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //SPACEインデント
/* 51 */ F_UNINDENT_SPACE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //逆SPACEインデント
/* 52 */ F_DISABLE/*F_WORDSREFERENCE*/ /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //単語リファレンス //アイコン未作
/* 53 */ F_LTRIM /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //LTRIM // 2001.12.03 hor
/* 54 */ F_RTRIM /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //RTRIM // 2001.12.03 hor
/* 55 */ F_SORT_ASC /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //SORT_ASC // 2001.12.06 hor
/* 56 */ F_SORT_DESC /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //SORT_DES // 2001.12.06 hor
/* 57 */ F_MERGE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //MERGE // 2001.12.06 hor
/* 58 */ F_RECONVERT /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //再変換 // 2002.4.12 YAZAKI
/* 59 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 60 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 61 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 62 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 63 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 64 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* カーソル移動系(3段目32個: 65-96) */
/* 65 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 66 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 67 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 68 */ F_UP /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル上移動
/* 69 */ F_DOWN /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル下移動
/* 70 */ F_LEFT /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル左移動
/* 71 */ F_RIGHT /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル右移動
/* 72 */ F_UP2 /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル上移動(2行ごと)
/* 73 */ F_DOWN2 /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //カーソル下移動(2行ごと)
/* 74 */ F_WORDLEFT /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //単語の左端に移動
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -