------------------------------------------------------------------------- -------------------------------------------------------------------------   MMマクロ言語(MMエディタ Ver 5.50以降用) マニュアル   このマニュアルは、MMエディタのマクロを作成するために書かれたものです。 内容はMMエディタのヘルプとほぼ同じです。 ヘルプでは全体が見渡せない、全体の印刷ができない等の理由でこのテキスト 形式のマニュアルを作成しました。   MMマクロ言語に付いての質問やシステム関数の使い方や要望等ありましたら NIFTY FWINAL 8番会議室までお願いします。 またマクロを作られた方は、NIFTY FWINAL LIB 19 へアップロードして いただくようによろしくお願いします。 このマニュアルの転載は自由ですが、必ずオリジナルのままでお願いします。 このマニュアルの内容を変更しないで下さい。 1999/04/26   (C) y.miyazaki ------------------------------------------------------------------------- -------------------------------------------------------------------------   目次   1. MMマクロについて   2. 言語体系   3. プログラミングの注意点   4. システム変数   5. システム関数   6. コマンドキーの実行   7. 仮想キーコード一覧   8. エラーメッセージ ------------------------------------------------------------------------- 1. MMマクロについて MMマクロはソースコードデバッガ付属の高機能なマクロ言語です。 言語体系はC言語のサブセットとなっています。 C言語に不慣れな人でもシステム関数だけを使ってかなり便利なマクロが 組めますのでがんばってプログラミングしてください。 慣れればそんなに難しいものではありませんし、またC言語の勉強にもなります。 C言語はBASIC言語に比べはるかに強力な演算子をもち高速に動作します。 最近インターネット上の言語として注目されているJAVA言語とも基本的な 演算子等は同じですので相通じるものがあります。 MMマクロには以下の特徴があります。 ・作成したマクロのデバッグが、ソースコードデバッガでできます。 ・インタプリタ方式なので、作成したマクロが即実行できます。 ・外部のマクロファイルをマクロプログラム中から呼び出す事ができます。 ・関数内のみで有効な自動変数が使用できます。 ・各マクロファイル間で共通に使える大域変数がありますので、 マクロファイル間で連携したプログラムを組むことができます。 ・すべてのキーコマンドをマクロプログラムより呼び出す事ができます。 ・戻り値のあるシステム関数の値はシステム変数 Result へもセットされますので Result の値でも戻り値が参照できます。 ------------------------------------------------------------------------- 2. 言語体系 言語体系はC言語のサブセットとなっています。概略は次の通りです。 C言語自体の文法や構文については、市販のC言語の教科書等をご覧ください。 ・各マクロファイル間で共通に使えるMM大域変数が5個あります。  この変数はMMエディタ の起動時に0に初期化されます。 ・MMエディタ の状態を知るための47個のシステム変数があります。  システム変数の値を直接変更することはできません。 ・プログラム作成のための190個のシステム関数があります。 ・変数の型の種類は1バイト(8ビット)系のchar型、4バイト(32ビット)系の int型、ポインタ型と配列型が使用できます。 ポインタの配列や多次元配列も使用出来ます。 ・int型は4バイト(32ビット)の値を持ちますので -2,147,483,648 から 2,147,483,647 までの範囲の値を持つことができます。 ・変数および関数の名前は半角で24文字まで有効です。 ・変数の型の定義、関数のプロトタイプ宣言はありません。 ・変数はグローバル変数とローカル変数(自動変数)の2種類が使えます。  extern、static 宣言はありません。 ・コンマ演算子、型変換、sizeof 演算子は使えません。 ・switch 文、do 文、for 文、continue 文、goto 文は  使えません。 ------------------------------------------------------------------------- 3. プログラミングの注意点 MMマクロ言語はマクロ言語ではありますが、れっきとしたC言語です。 C言語はBASIC言語に比べはるかに強力な演算子をもち高速に動作しますが、 その分使い方を誤ると簡単に誤動作したりしますので以下のことに留意して プログラミングをして下さい。 これは、MMマクロ言語だけではなく普通のC言語のプログラミングにも 当てはまります。 ・配列の宣言  配列を使う前には宣言が必要ですが、必ず使用するだけの配列エリアを確保 して下さい。宣言した以上のエリアにデータを書き込んでも警告は出ませんが これが誤動作の元になります。  例えば、char str[10]; として10バイトの配列のエリアを確保しておいて      Strcpy(str, "123456789012345"); とすると str へ16バイト(15バイト +1バイト(ヌル文字))がコピーされます。  str のエリアは10バイトしかないので、後の6バイトは別のエリアに書き込ま れてこれが誤動作の原因となります。  この場合なら str のエリアは最低16バイト確保しておく必要があります。 ・ポインタは必ず値を与えてから使う  宣言しただけのポインタをいきなり使うと誤動作の元です。  例えば、char *pt; として宣言しておいて      Strcpy(pt, "12345"); とすると アドレスの定かでないエリアへデータが 書き込まれてしまいこれが誤動作の原因となります。  ポインタは使う前に pt = dest; pt = &dest[0]; 等と必ず値を与えてから使って 下さい。 ・繰り返しの処理では抜ける手段を設ける  マクロでは、繰り返しの処理をよく行います。  例えばテキストの先頭行から最終行までで条件にマッチした行に対して何かを おこなうとかです。  こういう場合すべてが上手く行けば問題無いですが、場合によってはマクロが 正常に終わらないということがあります。もちろんプログラミングに何らかの不具合 があるのですが、それで終了出来ないというのではまずいので必ず何らかの方法で 終了出来るようにしておきます。  例えば以下の場合は、[ESC]キーが押されると繰り返し処理を中止します。 while(1) // 繰り返し何らかの処理をおこなう { if(KbHit() == 0x1b) // ESCが押された場合は終了 break; ・・・・・・・・・ ・・・・・・・・・ // 何らかの処理 } ・簡単なサンプルマクロ このマクロは検索を行ないます。 文字列が範囲指定されていない場合は 最後に検索した検索文字列で、 文字列が範囲指定されている場合は その文字列を検索文字列としてセットして から検索を開始します。 --------------------------------------------------------------------- main() { char fstr[260], line[300]; int len, spos, epos; // spos = 選択開始位置. epos = 終了位置 if(Block) // 選択モードなら { // 範囲指定されている文字列を検索文字列として得る if(Col > Selcolm) { // 順方向の範囲選択 spos = Selcolm - 1; epos = Col - 2; } else { // 逆方向の範囲選択 spos = Col - 1; epos = Selcolm - 2; } Getline2(line); // 現在行の内容を画面のイメージで line[] へ取得する // 検索文字列を fstr[] へセット len = epos - spos + 1; // 文字列の長さ if(len > 0 && len < 250) // 一応長さをチェックする { Strncpy(fstr, &line[spos], len); SetFindS(fstr); // 検索文字列のセット Select(0); // 必要であれば、選択モード 解除 } } SetFind(0x0); // 必要であれば、検索フラグのセット Find(); // いよいよ 検索開始 !! } ------------------------------------------------------------------------- 4. システム変数 各マクロファイル間で共通に使えるMM大域変数(int型)が5個あります。 このMM大域変数はMMエディタ 起動時に0に初期化されます。 以下が、5個のMM大域変数(int型)です。 ・Global1 ・Global2 ・Global3 ・Global4 ・Global5 MM大域変数は [矩形ブロックの切り取り][矩形ブロックのコピー][矩形ブロックの挿入]の 各マクロの中で使用しています。参考にしてください。 他に参照できる以下の、51個のシステム変数(int型)があります。 変数は現在の値を常に保持していますのでいつでも参照できます。 変数の値を直接変更することはできません。 ・Xmax −−−− カラム方向へのカーソルが移動できる最大位置            ウインドウの大きさが変わると変わります ・Ymax −−−− 行方向へのカーソルが移動できる最大位置            ウインドウの大きさが変わると変わります ・Xpos −−−− 表示開始カラム位置(先頭は0) ・Xcsr −−−− カーソルカラム位置(先頭は0) ・DXcsr −−−− 表示カーソルカラム位置(先頭は0)−疑似カーソル位置 ・Ycsr −−−− カーソル行位置(先頭は0) ・Col  −−−− 表示行先頭からのカラム位置(先頭は1) ・Col2 −−−− 論理行先頭からのカラム位置(先頭は1) ・DCol −−−− 表示論理カラム位置(先頭は1)−疑似カラム位置 ・Cecp −−−− テキスト先頭よりの現在位置(先頭は0) ・Line −−−− 現在の行位置(先頭行は1) ・Totalline −− テキスト全体の行数 ・Linelen −−  現在の表示行1行の長さ(改行は含みません) ・Linelen1 −−  現在の論理行1行の長さ(改行は含みません) ・Margin −−  折り返し文字数(10ー250) ・Tab  −−−− タブの文字数(2・4・6・8) ・Tln  −−−− 画面トップ行に表示されている行No。 ・Ins  −−−− インサートモード 1=ON、0=OFF ・Indent −−− インデントモード 1=ON、0=OFF ・CurMode −−− カーソルモード 0=ノーマル、1=セミフリー、2=フリー ・CurPsPos −− 貼り付け後のカーソル位置 0=先頭のまま、1=最後へ移動 ・Code −−−− カーソル位置の文字コード ・Kcode −−−− カーソル位置の文字種 1=全角、0=半角 ・Tcode −−−− カーソル位置の文字タイプ            0=EOF(テキストの終わり)            1=改行            2=00H - 20H、全角スペース(8140H)            3=半角記号、全角記号(8141H - 8151H,815CH - 824EH)            4=全角ひらがな(829FH - 82F1H)            5=上記以外の全角文字            6=上記以外の半角文字 ・Block −−−− 現在の選択モード            0=非ブロック、 1=行ブロック            2=文字ブロック、3=矩形ブロック ・Result −−− マクロ関数の戻り値 ・Linestat −− 現在行の評価値             0=改行で終了している             1=改行で終了していない            −1=EOF行            −2=EOF行より下の行 ・Selcolm  −− 選択開始カラム位置 ・IMEStatus −− IMEの状態            0=OFFの状態            1=ON の状態 ・OpenFType −− ファイルを開くで使用するダイアログのタイプ            0=ビュアー付きダイアログ            1=95標準のダイアログの状態 ・Sakuzu −−− 罫線作図モード 1=ON、0=OFF ・SakuzuPen −− 罫線作図での罫線の太さ 1=太線、0=細線 ・KeiHogo −−− 罫線保護モード 1=ON、0=OFF ・RealForm −− リアルタイム整形 1=ON、0=OFF ・RealKajou −− リアルタイム整形は箇条書きで行う 1=ON、0=OFF ・OpenFileNum − 開いているテキストウインドウの数 ・Touch −−−− テキストが変更されているか            1=変更あり、0=変更なし ・WinSize −−− テキストウインドウの大きさの状態            0=標準、1=最大化、2=アイコン化 ・CascadSize − カスケード時の大きさ            1=最大化、0=標準 ・WinStyle −− ウインドウの表示形式            1=タイル、0=カスケード ・TileIsV −−− タイル表時の時の形            1=横長、0=縦長 ・SelLn −−−− 選択開始行 ・LineMode −− 現在の行の数え方            1=表示行、0=論理行 ・TileNum −−− タイル表示での同時に開く窓の数 ・StatusbarOn − ステータスバーは表示されているか            1=表示、0=非表示 ・PageMode −− 行No.へページ内行No.を表示するか            1=表示、0=非表示 ・PageLn −−− 1ページ当たりの行数 ・ProtectWindow  書き込み禁止モードか            1=禁止、0=禁止ではない ・JumpMode −− 指定行へのジャンプのモード            0=中央行、1=現在行、2=先頭行、3=最下位行 ・ShCurMode −− 検索での着地行を現カーソル行に固定か            0=固定しない、1=固定する ・OpenDirStatus  ファイルを開くでの表示するフォルダのモード            0=現在アクティブなテキストのフォルダ            1=前回表示されたファルダ ・IsPFont −−− プロポーショナルフォントが使用されているか  0=使用されていない  1=使用されている ・MruCursor 履歴ファイルを開く でのカーソル位置再現のモードか 0=カーソル位置再現のモードではない 1=カーソル位置再現のモードである ------------------------------------------------------------------------- 5. システム関数 以下、193個のシステム関数があります。 戻り値のある関数の値はシステム変数 Result へもセットされますので Result の値でも戻り値が参照できます。 ・検索系   Find(); −−−−−−−− 検索   FindNext(); −−−−−−−− 次(↓)を検索   FindPrev(); −−−−−−−− 前(↑)を検索   Replace(); −−−−−−−− 置換   Top(); −−−−−−−− テキストの先頭へ   GoLine(); −−−−−−−− テキストの指定行へ   GoCp(); −−−−−−−− テキストの指定の位置へ   Bottom(); −−−−−−−− テキストの最後へ   Mark(); −−−−−−−− カーソル位置をマーク   MarkJump(); −−−−−−−− 最後にマークしたカーソル位置へ   MarkNext(); −−−−−−−− 次(↓)のマーク位置へ   MarkPrev(); −−−−−−−− 前(↑)のマーク位置へ   PrevCur(); −−−−−−−− 直前のカーソル位置へ   Parent(); −−−−−−−− 対応する ()、[]、{}、<> へ   TagJamp(); −−−−−−−− タグジャンプ ・検索モード系   SetFind(); −−−−−−−− 検索フラグのセット   GetFind(); −−−−−−−− 検索フラグの取得   SetFindS(); −−−−−−−− 検索文字列のセット   SetRep(); −−−−−−−− 置換フラグのセット   GetRep(); −−−−−−−− 置換フラグの取得   SetRepS(); −−−−−−−− 置換文字列セット ・カーソル系   Up(); −−−−−−−− カーソル移動(↑)   Down(); −−−−−−−− カーソル移動(↓)   Left(); −−−−−−−− カーソル移動(←)   Right(); −−−−−−−− カーソル移動(→)   Backward(); −−−−−−−− 1語左へ   Forward(); −−−−−−−− 1語右へ   LDEdge(); −−−−−−−− 表示行頭へ   RDEdge(); −−−−−−−− 表示行末へ   LEdge(); −−−−−−−− 論理行頭へ   REdge(); −−−−−−−− 論理行末へ   RollUp(); −−−−−−−− スクロールアップ   RollDown(); −−−−−−−− スクロールダウン   PageUp(); −−−−−−−− ページアップ   PageDown(); −−−−−−−− ページダウン   TopScr(); −−−−−−−− 画面の上端へ   BotomScr(); −−−−−−−− 画面の下端へ   GoBlok(); −−−−−−−− 選択ブロックの先頭、最後へ ・編集系   InsMode(); −−−−−−−− 挿入モードの切り替え   Ret(); −−−−−−−− リターンキー   Bs(); −−−−−−−− BSキー   Del(); −−−−−−−− DELキー   DelBWord(); −−−−−−−− 語の先頭まで削除   DelWord(); −−−−−−−− 語の終わりまで削除   DelLine(); −−−−−−−− 1行削除   DelBefor(); −−−−−−−− 行頭まで削除   DelAfter(); −−−−−−−− 行末まで削除   InsLine(); −−−−−−−− 1行挿入   PopChr(); −−−−−−−− 削除文字の復活   PopLn(); −−−−−−−− 削除行の復活   Tabs(); −−−−−−−− タブキー   ConvWord(); −−−−−−−− 1語、大/小文字変換   Select1(); −−−−−−−− 行選択モード   Select2(); −−−−−−−− 矩形選択モード   BlokCut(); −−−−−−−− ブロック切り取り   BlokCopy(); −−−−−−−− ブロックコピー   BlokPast(); −−−−−−−− プロック貼り付け   BlokIns(); −−−−−−−− ブロック挿入   StackDel(); −−−−−−−− ブロックスタックのテキスト削除   GetFindS(); −−−−−−−− カーソル位置の文字列を検索文字列として取得   GetSelText();−−−−−−−− 選択されている文字列を取得します   GetCurText();−−−−−−−− カーソル位置の文字列を取得します   Select(); −−−−−−−− 選択モードのセット   AIndent(); −−−−−−−− オートインデントの切り替え   SetCurMode(); −−−−−−− カーソルモード 0=ノーマル、1=セミフリー、2=フリー   SetCurPsPos(); −−−−−−− 貼り付け後のカーソル位置 0=先頭のまま、1=最後へ移動   DispOff(); −−−−−−−− 画面非表示モード   DispOff2(); −−−−−−−− 画面非表示モード(ステータスバー、ルーラーへも禁止)   DispOn(); −−−−−−−− 画面再表示モード   GotoX(); −−−−−−−− カーソルをxカラム位置へ(表示行の範囲で)   GotoX2(); −−−−−−−− カーソルをxカラム位置へ(論理行の範囲で)   GotoY(); −−−−−−−− カーソルを画面のy行目へ   SetSakuzu(); −−−−−−−− 罫線作図モードの切替え   SetSakuzuPen();−−−−−−− 罫線作図での罫線の太さの切替え   SetKeiHogo(); −−−−−−− 罫線保護のON.OFF   SetRealForm(); −−−−−−− リアルタイム整形のON.OFF   SetRealKajou();−−−−−−− リアルタイム整形は箇条書きで行うのON.OFF   SetLineMode(); −−−−−−− 論理行/表示行の変更   SetTab(); −−−−−−−− タブの文字数の変更 ・クリップボード系   ClipCut(); −−−−−−−− クリップボード切り取り   ClipCopy(); −−−−−−−− クリップボードコピー   ClipPast(); −−−−−−−− クリップボード貼り付け   Delete(); −−−−−−−− テキストの削除   GeClipTextLen(); −−−−−− クリップボードのテキスト長を得る   GetClipText(); −−−−−−− クリップボードのテキストを読み込む   SetClipText(); −−−−−−− クリップボードへテキストを書き込む   AddClipText(); −−−−−−− クリップボードへテキストの追加書き込み ・文字列操作系   PutSpace(); −−−−−−−− カーソル位置からxカラム目までをタブ、スペースで埋める   PutStr(); −−−−−−−− 文字列の出力   PutTeXStr(); −−−−−−−− TeXタグ形式文字列の出力   GetStr(); −−−−−−−− ダイアログを表示して文字列を入力   GetStr2(); −−−−−−−− デフォルト入力文字列でダイアログを表示して文字列を入力   PutChr(); −−−−−−−− 文字の出力、コマンドキーの実行   StrChr(); −−−−−−−− 文字を文字列より検索   InKeyCmd(); −−−−−−−− 文字、又はキーコマンドの入力   InKeyChar(); −−−−−−−− 制御文字を含む文字の入力 ・矩形ブロック系   KBCut(); −−−−−−−− 矩形ブロック切り取り   KBCopy(); −−−−−−−− 矩形ブロックコピー   KBIns(); −−−−−−−− 矩形ブロック挿入 ・ユーティリティー系   MacroEx(); −−−−−−−− 外部マクロの実行   Beep(); −−−−−−−− ビープ音の出力   FPrint(); −−−−−−−− 書式付き文字列出力   GetDate(); −−−−−−−− 日付の取得   GetWeek(); −−−−−−−− 曜日の取得   GetTime(); −−−−−−−− 時刻の取得   KbHit(); −−−−−−−− キーが押されたか   Getline(); −−−−−−−− 現在行の内容の取得   Getline2(); −−−−−−−− 画面のイメージで現在行の内容の取得   GetFileName(); −−−−−−− 編集中ファイル名の取得   GetMruFile(); −−−−−−− 履歴ファイル名の取得   GetMruDir(); −−−−−−−− 履歴フォルダ名の取得   GetCurDirectory(); −−−−− カレントディレクトリの取得   SetCurDirectory(); −−−−− カレントディレクトリの変更   LoadSdFile(); −−−−−−− 表示設定書式ファイルの読込み   GetSdFile(); −−−−−−−− 表示設定ファイル名を取得する   LoadPrFile(); −−−−−−− 印刷書式ファイルの読込み   LoadKwFile(); −−−−−−− キーワードファイルの読込み   SetIMEStatus(); −−−−−− IMEの状態の取得   SetOpenFType(); −−−−−− ファイルを開くのダイアログのセット   WinExec(); −−−−−−−− 外部のプログラムを実行する   WinExec2(); −−−−−−−− 非表示にて外部のプログラムを実行する   Message(); −−−−−−−− メッセージを表示する   MessageBox();−−−−−−−− メッセージを表示して結果を得ます   Sleep(); −−−−−−−− マクロの実行を指定時間停止します   Menu(); −−−−−−−− メニューを表示する   GetKeyState(); −−−−−−− 特定のキーが押されているか調べる   ChangeMruNo(); −−−−−−− ファイル履歴No.を変更する   SetMruCursor();−−−−−−− 履歴ファイルを開く でのカーソル位置再現のモード変更   GetVersion(); −−−−−−− MMのバージョンの取得   SetToolbar(); −−−−−−− ツールバーの表示のON.OFF   SetStatusbar();−−−−−−− ステータスバーの表示のON.OFF   GetMmPath(); −−−−−−−− MMの起動フォルダを得る   SetMargin(); −−−−−−−− 1行の折り返し文字数をセット   SetPageMode(); −−−−−−− 行No.へページ内行No.を表示するか   SetPageLn(); −−−−−−−− 1ページ当たりの行数をセット   SPrint(); −−−−−−−− 指定エリアへの書式付き文字列出力   SetJumpMode(); −−−−−−− 指定行へのジャンプでのモード変更   SetShCurMode();−−−−−−− 検索での着地行を現カーソル行に固定か   SetOpenDirStatus();−−−−− ファイルを開くでの表示フォルダのモード変更   OpenFileName();−−−−−−− コモンダイアログを表示してファイル名を選択する   ExecTeXTool(); −−−−−−− TeX入力ツールの起動   GetEvent(); −−−−−−−− イベントマクロでのイベントNo.を得る   SetTimer(); −−−−−−−− イベントタイマーを起動する   KillTimer(); −−−−−−−− イベントタイマーを停止する   WriteStatus(); −−−−−−− ステータスバーへの表示 ・ファイル系   Open(); −−−−−−−− ファイルを開く   Open2(); −−−−−−−− カーソル履歴を再現してファイルを開く   Save(); −−−−−−−− ファイルを保存   Close(); −−−−−−−− 確認なしでファイルを閉じる   CloseAs(); −−−−−−−− 確認ありでファイルを閉じる ・Cライブラリ文字列操作系   Strcpy(); −−−−−−−− 文字列をコピーします   Strncpy(); −−−−−−−− 文字列を指定バイト数コピーします   Strcat(); −−−−−−−− 文字列を連結します   Strcmp(); −−−−−−−− 文字列を比較します   Strcmpi(); −−−−−−−− 文字列を比較します   Strlen(); −−−−−−−− 文字列の長さを調べる   Atoi(); −−−−−−−− 文字列を数字へ変換する   Itoa(); −−−−−−−− 数字を文字列へ変換する   Memset(); −−−−−−−− メモリを指定の文字で埋める   Strstr(); −−−−−−−− 文字列の中を指定の文字列で検索   Strstri(); −−−−−−−− 文字列の中を指定の文字列で検索   Strstrp(); −−−−−−−− 文字列の中を指定の文字列で検索   Strchr(); −−−−−−−− 文字列の中を指定の文字で検索   Strrchr(); −−−−−−−− 文字列の中を指定の文字で最後尾より検索   Memcpy(); −−−−−−−− メモリ間のデータのコピー ・ウインドウズ系   SetWindowCascade(); −−−− ウインドウのカスケード表示   SetWindowVTile(); −−−−− ウインドウの縦タイル表示   SetWindowHTile(); −−−−− ウインドウの横タイル表示   SetWindowStyle(); −−−−− ウインドウの表示形式の変更   SetTileMode(); −−−−−−− ウインドウのタイルの形の変更   NextWindow(); −−−−−−− 次のウインドウへ移動する   LoadLibrary(); −−−−−−− DLLのロード   FreeLibrary(); −−−−−−− DLLの開放   SetWindowText(); −−−−−− キャプションへ文字列を表示   GetWindowText(); −−−−−− キャプションに表示されている文字列の取得   MaxWindow(); −−−−−−−− ウインドウを最大化します   MinWindow(); −−−−−−−− ウインドウを最小化します   RestWindow(); −−−−−−− ウインドウを元の大きさへ戻します   SetTileNum(); −−−−−−− タイル表示するウインドウの数の変更\par   SetCascadSize(); −−−−−− カスケード表示時のウインドウの大きさの変更\par   SetProtectWindow(); −−−− ウインドウの書き込み禁止モードの変更\par ・ダイレクトファイルI/O系   LOpen(); −−−−−−−− ファイルをオープンします   LCreat(); −−−−−−−− ファイルを作成します   LSeek(); −−−−−−−− ファイル読み込み位置の設定   LClose(); −−−−−−−− ファイルを閉じます   LRead(); −−−−−−−− ファイルより読み込み   LWrite(); −−−−−−−− ファイルへ書き込み DeleteFile(); −−−−−−− ファイルを削除します ・レジストリ系   GetRegiStr(); −−−−−−− レジストリ文字列データの読み込み   GetRegiInt(); −−−−−−− レジストリ整数値データの読み込み   GetIniStr(); −−−−−−−− INIファイルより文字列を得る   GetIniInt(); −−−−−−−− INIファイルより整数値を得る   SetIniStr(); −−−−−−−− INIファイルへ文字列を保存 ------------------------------------------------------------------------- [システム関数] ------------------------------------------------------------------------- ・検索系 ------------------------------------------------------------------------- Find(); 現在の検索条件により文字列の検索をします。 戻り値:検索文字列が見つかった場合は0を、     見つからなかった場合は−1を返します。 備考:検索条件のセットは SetFind();、    検索文字列のセットは SetFindS(); で行います。 ------------------------------------------------------------------------- FindNext(); 現在の検索条件により次(↓)の文字列の検索をします。 戻り値:検索文字列が見つかった場合は0を、     見つからなかった場合は−1を返します。 備考:Find(); での検索成功後、次(↓)の検索の実行に使用します。 ------------------------------------------------------------------------- FindPrev(); 現在の検索条件により前(↑)の文字列の検索をします。 戻り値:検索文字列が見つかった場合は0を、     見つからなかった場合は−1を返します。 備考:Find(); での検索成功後、前(↑)の検索の実行に使用します。 ------------------------------------------------------------------------- Replace(); 現在の置換条件により文字列の置換をします。 戻り値:置換した文字列の数を返します。 備考:置換条件のセットはSetRep();、    置換文字列のセットはSetRepS(); で行います。 ------------------------------------------------------------------------- Top(); テキストの先頭行へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GoLine(int line); テキストの指定行へ移動します。 対象となるテキストが論理行モードであれば論理行で、 表示行モードであれば表示行で移動します。 パラメータ:int line = 移動する行No。を指定します。 戻り値:この関数に戻り値はありません。 備考:最終行より大きい行No。を指定すると最終行へ移動します。 ------------------------------------------------------------------------- GoCp(int cp); テキストの指定の位置へ移動します。 パラメータ:int cp =テキスト先頭を0とした、移動するテキスト 位置(先頭を0としたバイト位置)を指定します。 戻り値:この関数に戻り値はありません。 備考:最終位置より大きい値を指定すると最終位置へ移動します。 ------------------------------------------------------------------------- Bottom(); テキストの最後行へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Mark(); 現在のカーソル位置をマークします。 戻り値:この関数に戻り値はありません。 備考:マークしたカーソル位置へは MarkJump(); で移動します。 ------------------------------------------------------------------------- MarkJump(); 最後にマークしたカーソル位置へ移動します。 戻り値:この関数に戻り値はありません。 備考:マークしたカーソル位置は最大50個まで保存されます。 ------------------------------------------------------------------------- MarkNext(); 現カーソル位置より最も近い、次(↓)のカーソルマーク位置へ移動します。 次(↓)のカーソルマーク位置が見つからない場合はカーソル位置は元の位置のままです。 戻り値:(↓)方向にマーク位置が見つかった場合は0を、     見つからなかった場合は−1を返します。 備考: ------------------------------------------------------------------------- MarkPrev(); 現カーソル位置より最も近い、前(↑)のカーソルマーク位置へ移動します。 前(↑)のカーソルマーク位置が見つからない場合はカーソル位置は元のままです。 戻り値:(↑)方向にマーク位置が見つかった場合は0を、     見つからなかった場合は−1を返します。 備考: ------------------------------------------------------------------------- PrevCur(); 直前のカーソル位置へ移動します。 戻り値:この関数に戻り値はありません。 備考:次のコマンドを実行するときそのカーソル位置が    [直前のカーソル位置]として記憶されます。    ・テキストの先頭へ    ・テキストの最後へ    ・直前のカーソル位置へ    ・カーソル位置マーク    ・テキストの指定行へ    ・マーク位置へジャンプ ------------------------------------------------------------------------- Parent(); 対応する ()、[]、{}、<> へ移動します。 戻り値:この関数に戻り値はありません。 備考:現カーソル位置が該当するかっこ上になければ何もしません。 ------------------------------------------------------------------------- TagJamp(); タグジャンプを実行します。 現カーソル行よりテキストの最後までタグ行として認識できる文字列を探します。 タグ書式が見つかるとそのファイルをオーブンしタグ行へ移動します。 戻り値:この関数に戻り値はありません。 備考:タグ行として認識できる書式は次の通りです。     <ヘッダー> : .を含まない任意の文字列     <パス名>  : .を含む文字列(ファイル名)     <行番号>  : 10進数 ------------------------------------------------------------------------- ・検索モード系 ------------------------------------------------------------------------- SetFind(int mode); 検索条件をセットします。 パラメータ:int mode 各検索条件は最下位ビットより1ビットづつに割り当てられています。        0ビット=検索方向       0=(↓)、1=(↑)            1ビット=大文字、小文字の区別 0=あり、 1=なし            2ビット=単語単位での検索   0=No、 1=Yes            3ビット=正規表現での検索   0=No、 1=Yes            4ビット=あいまい検索での検索 0=No、 1=Yes            5ビット=\\nをエスケープ文字としての検索 0=No、 1=Yes            6ビット=検索失敗時ビープ音を鳴らす 0=No、 1=Yes            7ビット=高度なあいまい検索2での検索 0=No、 1=Yes            6ビット=検索失敗時メッセージを表示する 0=No、 1=Yes 戻り値:この関数に戻り値はありません。 備考:この関数は検索実行時の検索条件を変更します。 例題:検索方向(↓)、大文字、小文字の区別=なし、    単語単位での検索=Yes、正規表現での検索=Noの条件で    あいまい検索での検索=Noの条件で    文字列 PoPUp の検索を実行します main() { SetFind(0x7); SetFindS("PoPUp"); Find(); } ------------------------------------------------------------------------- GetFind(void); 現在の検索条件を取得します。 取得する各検索条件は最下位から1ビットづつに割り当てられています。 詳しい内容につきましては、SetFind(); をご覧下さい。 戻り値:現在の検索条件を返します。 例題:SetFind(0x7); にて検索条件を変更する前に、 GetFind(); で検索条件を 取得しておき検索終了後に SetFind(stat); にて検索条件を元へ戻しています。 main() { int stat; stat = GetFind(); SetFind(0x7); SetFindS("PoPUp"); Find(); SetFind(stat); } ------------------------------------------------------------------------- SetFindS(char *str); 検索文字列をセットします。 パラメータ:char *str 検索文字列のポインタをセットします。 戻り値:この関数に戻り値はありません。 備考:この関数は検索実行時の検索文字列を変更します。 例題:文字列 PoPUp の検索を実行します main() { char *str; str = "PoPUp"; SetFindS(str); Find(); } ------------------------------------------------------------------------- SetRep(int mode); 置換条件をセットします。 パラメータ:int mode       各検索条件は最下位ビットより1ビットづつ(置換範囲は2ビット)に       割り当てられています。       0ビット=大文字、小文字の区別   0=あり、1=なし       1ビット=単語単位での検索     0=No、1=Yes       2ビット=一括置換か        0=個別、1=一括       3,4ビット=置換範囲            0=ALL、1=カーソル以降、2=カーソル以前       5ビット=置換終了後開始位置へ戻る 0=No、1=Yes       6ビット=一括置換、高速変換モード 0=No、1=Yes       7ビット=途中の置換件数表示    0=No、1=Yes       8ビット=nを改行として検索、置換  0=No、1=Yes       9ビット=置換失敗時ビープ音を鳴らす 0=No、 1=Yes       10ビット=正規表現での検索   0=No、 1=Yes       11ビット=高度なあいまい検索での検索 0=No、 1=Yes       12ビット=高度なあいまい検索2での検索 0=No、 1=Yes 戻り値:この関数に戻り値はありません。 備考:この関数は置換実行時の置換条件を変更します。 例題:大文字、小文字の区別=あり、単語単位での検索=Yes、 一括置換か=一括、置換範囲=ALL、置換終了後開始位置へ戻る=No、 一括置換、高速変換モード=Yesの条件で    文字列 PoPUp を Menu への置換を実行します main() { SetRep(0x46); SetFindS("PoPUp"); SetRepS("Menu"); Replace(); } ------------------------------------------------------------------------- GetRep(void); 置換条件を取得します。 各検索条件は最下位ビットより1ビットづつ(置換範囲は2ビット)に割り当てられています。 詳しい内容につきましては、SetRep(); をご覧下さい。 戻り値:現在の置換条件を返します。 例題:SetRep(0x46); にて置換条件を変更する前に、 GetRep(); で置換条件を 取得しておき、置換終了後に SetRep(stat); にて置換条件を元へ戻しています。 main() { int stat; stat = GetRep(); SetRep(0x46); SetFindS("PoPUp"); SetRepS("Menu"); Replace(); SetRep(stat); }r ------------------------------------------------------------------------- SetRepS(char *str) 置換文字列をセットします。 パラメータ:char *str 置換文字列のポインタをセットします。 戻り値:この関数に戻り値はありません。 備考:この関数は置換実行時の置換文字列を変更します。 例題:現在の置換条件で、文字列 PoPUp を Menu への置換を実行します main() { SetFindS("PoPUp"); SetRepS("Menu"); Replace(); } ------------------------------------------------------------------------- ・カーソル系 ------------------------------------------------------------------------- Up(); カーソルを上(↑)へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Down(); カーソルを下(↓)へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Left(); カーソルを左(←)へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Right(); カーソルを右(→)へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Backward(); カーソルを1語左へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Forward(); カーソルを1語右へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- LDEdge(); カーソルを表示行頭へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- RDEdge(); カーソルを表示行末へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- LEdge(); カーソルを論理行頭へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- REdge(); カーソルを論理行末へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- RollUp(); 1行スクロールアップします。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- RollDown(); 1行スクロールダウンします。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- PageUp(); 1行ページアップします。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- PageDown(); 1行ページダウンします。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- TopScr(); 画面の上端へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- BotomScr(); 画面の下端へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GoBlok(); 選択ブロックの先頭、最後へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ・編集系 ------------------------------------------------------------------------- InsMode(int mode); 挿入モードを切り替えます。 パラメータ:int mode −1=トグル、0=OFF、1=ON 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Ret(); リターンキーを入力します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Bs(); BSキーを入力します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Del(); DELキーを入力します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DelBWord(); 現カーソル位置の1つ前の文字より語の先頭までを削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DelWord(); 現カーソル位置の文字より語の終わりまでを削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DelLine(); 現カーソル行を1行削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DelBefor(); 現カーソル位置の1つ前の文字より行頭までを削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DelAfter(); 現カーソル位置の文字より行末までを削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- InsLine(); 現カーソル行へ空行を1行挿入します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- PopChr(); 最後に削除した文字を復活します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- PopLn(); 最後に削除した行を復活します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Tabs(); タブキーを入力します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ConvWord(); 半角アルファベット文字を1語、大/小文字変換します。 戻り値:この関数に戻り値はありません。 備考:現カーソル位置が、半角アルファベット文字上になければ何もしません。 ------------------------------------------------------------------------- Select1(); 選択モードを行選択モードに設定します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Select2(); 選択モードを矩形選択モードに設定します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- BlokCut(); 選択範囲のテキストを削除し、ブロックスタックへコピーします。 選択範囲のテキストの内容は失われます。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- BlokCopy(); 選択範囲のテキストをブロックスタックへコピーします。 選択範囲のテキストの内容は失われません。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- BlokPast(); ブロックスタックよりテキストを貼り付けます。 貼り付けられるのは最後にブロックスタックへコピーされたテキストです。 ブロックスタックの内容は変わりません。 戻り値:貼り付けたバイト数を返します。 備考: ------------------------------------------------------------------------- BlokIns(); ブロックスタックよりテキストを挿入します。 挿入されるのは最後にブロックスタックへコピーされたテキストです。 挿入したブロックスタックのテキストは失われます。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- StackDel(); ブロックスタックのすべてのテキストを削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetFindS(); カーソル位置の文字列を検索文字列として取得します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetSelText(char *buf, int maxlen); 現在、選択されている文字列を buf へ 最大 maxlen バイト取得します。 文字列の最後にヌル文字('\0')を付加します。 戻り値:成功した場合は0が、失敗した場合は−1が返されます。 備考: ------------------------------------------------------------------------- GetCurText(char *buf, int maxlen); カーソル位置を含む文字列 (単語) を カーソル位置を前にさかのぼって buf へ 最大 maxlen バイト取得します。 文字列の最後にヌル文字('\0')を付加します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Select(int mode); 選択モードをセットします。 パラメータ:int mode 0=非ブロック、1=行ブロック、 2=文字ブロック、3=矩形ブロック 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- AIndent(int mode); オートインデントモードを切り替えます。 パラメータ:int mode −1=トグル、0=OFF、1=ON 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetCurMode(int mode); カーソルモードを切り替えます。 パラメータ:int mode 0=ノーマル、1=セミフリー、2=フリー 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetCurPsPos(int mode); 貼り付け後のカーソル位置のモードを切り替えます。 パラメータ:int mode 0=先頭のまま、1=最後へ移動 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DispOff(); 画面を非表示モードにします。 ステータスバー、ルーラーカーソルへの表示はします。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DispOff2(); 画面を非表示モードにします。 ステータスバー、ルーラーカーソルへの表示も禁止します。\par 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- DispOn(); 画面を表示モードにし再表示します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GotoX(int x); 表示行の範囲でカーソルをxカラム位置へ移動します。 行が折り返している場合でも、現カーソル行の表示行末以降(次行)へは移動しません。 パラメータ:int x 移動するカラム位置を指定します。(左端は1) 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GotoX2(int x); 論理行の範囲でカーソルをxカラム位置へ移動します。 行が折り返している場合は、現カーソル行の論理行末までの範囲で次行以降へ移動します。 パラメータ:int x 移動するカラム位置を指定します。(左端は1) 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GotoY(int y); カーソルを画面の y 行目へ移動します。 パラメータ:int y 移動する行位置を指定します。(上端は1) 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetSakuzu(int mode); 罫線作図モードを切り替えます。 パラメータ:int mode −1=トグル、0=OFF、1=ON トグルとは、現在の状態を反転(OFF -> ON, ON -> OFF)させることを言います。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetSakuzuPen(int mode); 罫線作図での罫線の太さを切り替えます。 パラメータ:int mode −1=トグル、0=細線、1=太線 トグルとは、現在の状態を反転(細線 -> 太線 , 太線 -> 細線)させることを言います。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetKeiHogo(int mode); 罫線作図での罫線保護のON.OFFを切り替えます。 パラメータ:int mode −1=トグル、0=OFF、1=ON トグルとは、現在の状態を反転(OFF -> ON , ON -> OFF)させることを言います。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetRealForm(int mode); リアルタイム整形のON.OFFを切り替えます。 パラメータ:int mode −1=トグル、0=OFF、1=ON トグルとは、現在の状態を反転(OFF -> ON , ON -> OFF)させることを言います。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetRealKajou(int mode); リアルタイム整形は箇条書きで行うのON.OFFを切り替えます。 パラメータ:int mode −1=トグル、0=OFF、1=ON トグルとは、現在の状態を反転(OFF -> ON , ON -> OFF)させることを言います。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetLineMode(int mode); 1行の数え方の論理行/表示行を変更します。 パラメータ:int mode 0=論理行、1=表示行 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetTab(int num); タブの文字数を変更します。 パラメータ:int num セットするタブの文字数       2、4、6、8のいづれかの値を指定して下さい。 戻り値:この関数に戻り値はありません。 ------------------------------------------------------------------------- ・クリップボード系 ------------------------------------------------------------------------- ClipCut(); 選択範囲のテキストを削除し、クリップボードへコピーします。 選択範囲のテキストの内容は失われます。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ClipCopy(); 選択範囲のテキストをクリップボードへコピーします。 選択範囲のテキストの内容は失われません。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ClipPast(); クリップボードよりテキストを貼り付けます。 貼り付けられるのは最後にクリップボードへコピーされたテキストです。 クリップボードの内容は変わりません。 戻り値:貼り付けたバイト数を返します。 備考: ------------------------------------------------------------------------- Delete(); 選択範囲のテキストを削除します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetClipTextLen(int *nbytes, int *lines); クリップボードの中のテキストの長さと論理行数を調べます。 nbytes へはクリップボードの中のテキストの長さがバイト数でセットされます。 lines へはクリップボードの中のテキストの論理行数がセットされます。 戻り値:取得に成功した場合は0を、失敗した場合は−1を返します。 備考: 例題:クリップボードの中のテキストのバイト数を調べて、    2000バイト未満であれば buf へ読み込んで現カーソル位置へ表示します。 main() { int nbytes, lines; char buf[2000]; GetClipTextLen(&nbytes, &lines); if(nbytes > 0 && nbytes < 2000) { GetClipText(buf, 0, nbytes); buf[nbytes] = 0; PutStr(buf); } } ------------------------------------------------------------------------- GetClipText(char *buf, int pos, int maxlen); クリップボードの中のテキスト先頭より pos バイト目より buf へ、最大 maxlen 読み込みます。 クリップボードの中のテキストの大きさが maxlen より小さい場合は読み込むバイト数は maxlen より小さくなります。(テキストの大きさのバイト数が読み込まれます) クリップボードの中のテキストの先頭より読み込みたい場合 pos は0となります。 戻り値:読み込みに成功した場合は0を、失敗した場合は−1を返します。 備考: 例題:GetClipTextLen(); の例を参考にして下さい。 ------------------------------------------------------------------------- SetClipText(char *buf); クリップボードへ buf のデータを書き込みます。 現在クリップボードの中にあるテキストは上書きされてなくなります。 戻り値:書き込んだバイト数を返します。 備考: ------------------------------------------------------------------------- AddClipText(char *buf); クリップボードの中にあるデータの後ろへ buf のデータを追加書き込みます。 戻り値:書き込んだ後のクリップボードの中のデータバイト数を返します。 備考: ------------------------------------------------------------------------- ・文字列操作系 ------------------------------------------------------------------------- PutSpace(int x int ,mode); カーソル位置から x カラム目までをタブ、スペースで埋めます。 パラメータ:int x  カラム位置を指定します。       int mode 0=タブ,スペース、1=スペースのみ 戻り値:この関数に戻り値はありません。 備考:この関数は置換実行時の置換条件を変更します。 例題:カーソル位置を1カラム目へ移動し、    そこから10カラム目までをスペースのみで埋めます。 main() { GotoX(1); PutSpace(10, 1); // PutSpace(10, 0); // タブ、スペースで埋めるならこちらを使う } ------------------------------------------------------------------------- PutStr(char *str); カーソル位置へ文字列 str を出力します。 複数の改行を含む複数行の文字列もサポートしています。 入力される文字列のうちで \ は特別な意味を持ちます。 改行の入力 ----> \n タブの入力 ----> \t \ 自体の入力 ----> \\ となります。 パラメータ:char *str 出力する文字列のポインタを指定します。 戻り値:この関数に戻り値はありません。 備考: 例題:カーソル位置へ文字列 PoPUp を出力します。 main() { PutStr("PoPUp"); } ------------------------------------------------------------------------- PutTeXStr(char *str); カーソル位置へ TeXタグ形式文字列 str を出力します。 TeXタグ形式文字列 と言うのは「MMのTeX環境」マクロでサポートしている文字列で 複数行の文字列を一度に表示して、表示後のカーソル位置まで指定できるという便利な ものです。 入力される文字列のうちで \ は特別な意味を持ちます。 改行の入力 ----> \n タブの入力 ----> \t カーソルの位置 ----> \c \ 自体の入力 ----> \\ となります。 [カーソルの位置] \c は入力実行後のカーソルの位置を指定する場合に使います。 \\begin{abstract}\n\c\n\\end{abstract}\n なおこの関数はファイルから読み込んだ文字列を想定して作られています。 C言語ではファイルから文字列を読み込むと \ の文字にはもう1個 \ が付加されます。 従って文字列をデータとして用意して使う場合は \ を2倍に付加して書いて下さい。 上記の例の場合でしたら \\\\begin{abstract}\\n\\c\\n\\\\end{abstract}\\n となります。 この場合の実際の表示は --------------------- \begin{abstract} \end{abstract} --------------------- という入力になり、[カーソルの位置] は最初の改行の次の位置ですから 2行目の空行の上へ来ることになります。 パラメータ:char *str 出力する文字列のポインタを指定します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetStr(char *title); title のダイアログを表示して文字列を入力します。 入力した文字列は、配列 Strings[256] へセットされます。 パラメータ:char *title  ダイアログのタイトル文字列のポインタを 指定します。 戻り値: 0=文字列が入力された。     ー1=ESCが入力された。     ー2=改行が入力された。     以外=入力した文字列が表す数値。 備考: 例題:1−4のいずれかが選択されればそれぞれの処理を行います。    1−4、ESCのいずれが入力されるまで処理を続行します。 システム変数 Result はマクロ実行開始時に0に初期化されます。 main() { char *title; while(Result < 1 || Result > 4) { title = "Menu: 1.SetUp 2.Input 3.Draw 4.Print"; GetStr(title); if(Result == 1) SetUp(); else if(Result == 2) Input(); else if(Result == 3) Draw(); else if(Result == 4) Print(); else if(Result == -1) break else Beep(); } } SetUp() { } Input() { } Draw() { } Print() { } ------------------------------------------------------------------------- GetStr2(char *title, char *defstr); 動作は GetStr(); と同じですがデフォルトの入力文字列として defstr を渡すことが 異なります。この関数を実行するとダイアログの文字列入力位置で defstr にセット した文字列がデフォルトの入力文字列として反転表示します。 パラメータ:char *title ダイアログのタイトル文字列のポインタを指定します。       char *defstr デフォルト入力文字列のポインタを指定します。 戻り値: 0=文字列が入力された。     ー1=ESCが入力された。     ー2=改行が入力された。     以外=入力した文字列が表す数値。 備考: 例題:GetStr(); の例をご覧ください。 ------------------------------------------------------------------------- PutChr(int ch); カーソル位置への文字の出力、又はコマンドキーの実行を行います。 パラメータ:int ch       ・文字の出力の場合        半角文字=上位バイトは0、下位バイトへ文字コード        全角文字=シフトJISコードをセット       ・コマンドキーの実行の場合        上位バイトにコマンドキーNo.下位バイトは0 戻り値:この関数に戻り値はありません。 備考:コマンドキーの実行では[キーコマンド設定]メニューで登録できる    237のコマンドが実行できます。    コマンドキーNo.は先頭(ファイル:新しく作成)が0、    最後(ズームイン)が236の237種類です。 例題: main() { int c: // カーソル位置へ文字Aを出力します。 PutChr('A'); // コマンドキー30(検索:GREPの実行)を実行します。 PutChr(30 << 8); // 同上 c = 30; PutChr(c << 8); } ------------------------------------------------------------------------- StrChr(int code、 char *str); 文字 code を文字列 str より検索します。 パラメータ:int code  検索する文字       char *str  検索される文字列 戻り値:0以上=見つかった位置(先頭は0)      −1=見つからなかった 備考: 例題:カーソル位置の文字を文字列 str より検索します。 見つかった場合 システム変数 Result には見つかった位置が、 見つからなかった場合には−1がはいります。 Code はシステム変数でカーソル位置の文字コードを保持します。 main() { char *str; str = "0123456789"; StrChr(Code, str); } ------------------------------------------------------------------------- InKeyCmd(); 文字、又はキーコマンドの入力を、入力があるまで待って受け取ります。 制御文字(20H以下の文字)は入力しません。 MMエディタ98 のすべてのウインドウのキーコマンド入力が対象です。 戻り値:・半角文字入力の場合      上位バイトは0、下位バイトへ文字コード     ・全角文字入力の場合      シフトJISコード     ・コマンドキー入力の場合      上位バイトにコマンドキーNo.下位バイトは0 備考:この関数はキーボード待ちの状態をつくりMMエディタ98 へのキーボード入力を    フック(横取り)して文字、又はキーコマンドの入力をします。    この関数でキーボード待ちの状態にあるときは、他のテキストウインドウを    アクティブにしてそこでキーボード入力をしてもこの関数がキーボード入力    を横取りしますのでご注意下さい。 例題:これは作表マクロの一部です。    終了キー(コマンドキー 10)が押されるまでMMエディタ98 の    すべてのキーを横取りしてそれぞれの処理をします。 main() { while(1) { InKeyCmd(); if(Result & 0xff) // 文字の入力 InMoji(); else { c = Result >> 8; if(c == 10) // MMの終了キー(メニューへ戻る) return; else if(c == 49) // リターンキー(罫線の描画、消去) DrawKei(); else if(c == 35 || c == 36) // 1語右へ、左へキー(サイズ変更) HSize(); else if(c == 43 || c == 44) // ページアップ、ダウンキー(サイズ変更) VSize(); else if(c >= 50 && c <= 60) // 行編集キー、BSキーからTABキーまで InMoji(); else if(c == 66 || c == 67) // ブロックのペースト(張り付け、挿入) InMoji(); else PutChr(Result); } } } ------------------------------------------------------------------------- InKeyChar(); 制御文字(20H以下の文字)を含む文字の入力を、入力があるまで待って受け取ります。 制御文字もそのまま入力しますので、例えば [BacksSpace]キーの場合は08H、[Delete] キーの場合は2EH、[Enter]キーの場合は0DH が入力されます。 MMエディタ98 のすべてのウインドウのキーコマンド入力が対象です。 戻り値:・半角文字入力の場合      上位バイトは0、下位バイトへ文字コード     ・全角文字入力の場合      シフトJISコード 備考:この関数はキーボード待ちの状態をつくりMMエディタ98 へのキーボード入力を    フック(横取り)して文字、又はキーコマンドの入力をします。    この関数でキーボード待ちの状態にあるときは、他のテキストウインドウを    アクティブにしてそこでキーボード入力をしてもこの関数がキーボード入力    を横取りしますのでご注意下さい。 例題:[ESC]キーが押されるまでキーを入力し続けて何らかの処理を行います。 main() { while(1) { InKeyChar(); if(Result == 0x1b) // [ESC]の入力 return; else InMoji(); // この関数で何らかの処理を行います。 } } ------------------------------------------------------------------------- ・矩形ブロック系 ------------------------------------------------------------------------- KBCut(); 矩形ブロックを削除します。 戻り値:この関数に戻り値はありません。 備考:この関数はマクロプログラム blokcut.mac を    呼び出すことにより実現されています。 ------------------------------------------------------------------------- KBCopy(); 矩形ブロックをコピーします。 戻り値:この関数に戻り値はありません。 備考:この関数はマクロプログラム blokcopy.mac を    呼び出すことにより実現されています。 ------------------------------------------------------------------------- KBIns(); 矩形ブロックを挿入します。 戻り値:この関数に戻り値はありません。 備考:この関数はマクロプログラム blokins.mac を    呼び出すことにより実現されています。 ------------------------------------------------------------------------- ・ユーティリティー系 ------------------------------------------------------------------------- MacroEx(char *macro); 外部マクロプログラムを実行します。 パラメータ:char *macro 実行する外部マクロプログラム名のポインタ 戻り値:この関数に戻り値はありません。 備考:実行するマクロプログラムは[環境 設定]メニューの    [日本語IMEとDLL、起動マクロの制御]の    [実行するマクロを置くフォルダを指定して下さい]で指定されたフォルダへ、    されてなければMMエディタ98 の起動フォルダになければなりません。 例題:マクロプログラム zenhan.mac を実行します。 main() { MacroEx("zenhan.mac"); } ------------------------------------------------------------------------- Beep(); ビープ音を出力します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- FPrint(char *fmt, arg1, ・・・); C言語の標準関数 printf(); のように fmtの あとに可変個の引数を持つことが でき fmt の制御のもとにその引数を変換しカーソル位置へその文字列を出力します。 文字列 fmt の中では % とその続きの文字列により変換書式を指定します。 文字列 fmt の中の % と対応する引数の数は合っている必要があります。 ・文字列 fmt の中で使用できる書式指定の使用例  %d −−− 10進数へ変換します。  %4d −−− 4文字幅の10進数へ変換します。        変換文字が4文字に未たない場合はスペースが付加されます。  %04d −− 4文字幅の10進数へ変換します。        変換文字が4文字に未たない場合は0が付加されます。  %s −−− 対応する変数より文字列を入力します。  %4s −−− 対応する変数より文字列を4文字入力します。 パラメータ:char *fmt  書式指定を含む出力文字列       arg1, ・・・  書式に対応した可変個の引数 戻り値:この関数に戻り値はありません。 備考: 例題:現在の日付をカーソル位置へ出力します。 main() { int y, m, d; GetDate(&y, &m, &d); // 日付を得る y = y - 1900; FPrint("%02d/%02d/%02d",y, m, d); // 例:98/05/31 } ------------------------------------------------------------------------- GetDate(int *y, int *m, int *d); 現在の日付を取得します。 パラメータ:int *y 年を得る変数のアドレス       int *m 月を得る変数のアドレス       int *d 日を得る変数のアドレス 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetWeek(int *week); 現在の曜日を取得します。 値は、0(日)− 6(土)でセットされます。 パラメータ:int *week 曜日を得る変数のアドレス 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetTime(int *h, int *m, int *s); 現在の時刻を取得します。 パラメータ:int *h 時を得る変数のアドレス       int *m 分を得る変数のアドレス       int *s 秒を得る変数のアドレス 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- KbHit(); いずれかのキーが押されたかを調べます。 戻り値:キーが押されていない場合は0を、押された場合はキーのコード(仮想キーコード) を返します。 備考: ------------------------------------------------------------------------- Getline(char *line); 現在行(表示行)の内容を line へ取得します。 改行で終わっている行も改行は含まれません。 文字列line の最後へはヌル文字('\0')が付加されます。 line は現在の表示行1行の長さより大きい配列エリアを確保して下さい。 1行の表示文字数の最大は250文字ですので禁則文字等も考慮して260文字確保して おけば万全です。 パラメータ:char *line 現在行の内容を受取るバッファ 戻り値:この関数に戻り値はありません。 備考: 例題:現在行(表示行)の内容を line へ取得します。 main() { char line[260]; Getline(line); } ------------------------------------------------------------------------- Getline2(char *line); 現在行(表示行)の内容を画面のイメージで line へ取得します。 つまりタブ文字が画面で占めている文字分のエリアに展開されて line へ取得されます。 したがってタブ文字がある場合も、カラム位置の文字を正確に得ることができます。 line[30-1] でその前にタブ文字があっても30カラム位置の文字を得ることができます。 改行で終わっている行も改行は含まれません。 文字列 line の最後へはヌル文字('\0')が付加されます。 line は現在の表示行1行の長さより大きい配列エリアを確保して下さい。 1行の表示文字数の最大は250文字ですので禁則文字等も考慮して260文字確保して おけば万全です。 パラメータ:char *line 現在行の内容を受取るバッファ 戻り値:この関数に戻り値はありません。 備考: 例題:現在行(表示行)の内容を line へ取得します。 main() { char line[260]; Getline2(line); } ------------------------------------------------------------------------- GetFileName(char *fname); 現在編集中のファイル名をドライブ名、フォルダ名を含むフルパスで fname へ取得します。 ファイル名は最大256文字(最後のヌル文字まで含んで)になりますので fname のエリアは256文字は確保されておいて下さい。 パラメータ:char *fname ファイル名を受取るバッファ 戻り値:この関数に戻り値はありません。 備考: 例題:現在編集中のファイル名を fname へ取得します。 main() { char fname[256]; GetFileName(fname); } ------------------------------------------------------------------------- GetMruFile(char *fname, int no); 編集履歴ファイル名20個の内の1個を no で指定してドライブ名、フォルダ名 を含むフルパスで fname へ取得します。 履歴の先頭のファイル名なら 0 を 最後なら 19 を指定して下さい。 この編集履歴ファイル名とはファイルメニューに表示される履歴ファイルの一覧 です。 ファイル名は最大256文字(最後のヌル文字まで含んで)になりますので fname のエリアは256文字は確保されておいて下さい。 パラメータ:char *fname ファイル名を受取るバッファ       int no;   履歴ファイルNo. 戻り値:fname へコピーされた文字数を返します。 備考: 例題:編集履歴の先頭のファイル名を fname へ取得します。 main() { char fname[256]; GetMruFile(fname, 0); } ------------------------------------------------------------------------- GetMruDir(char *dir, int no); 編集履歴フォルダ名10個の内の1個を no で指定してドライブ名、フォルダ名 を含んで dir へ取得します。 履歴の先頭のフォルダ名なら 0 を 最後なら 9 を指定して下さい。 この編集履歴フォルダ名とはファイルメニューに表示される履歴フォルダの一覧 です。 フォルダ名は最大256文字(最後のヌル文字まで含んで)になりますので fname のエリアは256文字は確保されておいて下さい。 パラメータ:char *dir フォルダ名を受取るバッファ       int no; 履歴フォルダNo. 戻り値:dir へコピーされた文字数を返します。 備考: 例題:編集履歴の先頭のフォルダ名を dir へ取得します。 main() { char dir[300]; GetMruDir(dir, 0); } ------------------------------------------------------------------------- GetCurDirectory(char *dir); カレントディレクトリを文字列 dir へ取得します。 パラメータ:char *dir 戻り値:dir へ取得した文字数。 備考:dir のエリアは256文字以上確保して下さい。 例題:カレントディレクトリを配列 dir[] へ取得します。 main() { char dir[256]; GetCurDirectory(dir); } ------------------------------------------------------------------------- SetCurDirectory(char *dir); カレントディレクトリを文字列 dir へ変更します。 文字列にドライブ名を含めることはできません。 パラメータ:char *dir 戻り値:成功した場合は 0が、失敗の場合はそれ以外の数値が返ります。 備考: 例題:カレントディレクトリを \MYDIR\WORD へ変更します。 main() { SetCurDirectory("\\MYDIR\\WORD"); } ------------------------------------------------------------------------- LoadSdFile(char *fname); 表示設定書式ファイル fname を読込みます。 読込みに成功すると表示設定の内容は読み込んだ書式の内容に変更され画面も 新しい設定内容で更新されます。 パラメータ:char *fname 戻り値:読込みに成功した場合は 0以外の値を返します。 備考: 例題:カレントディレクトリの表示設定書式ファイル MMDOS.DS1 を読込みます。 main() { LoadSdFile("MMDOS.DS1"); } ------------------------------------------------------------------------- GetSdFile(char *fname); アクティブウインドウで使用されている表示設定ファイル名を取得します。 ただしテキストウインドウが開かれてから一度も表示設定書式ファイルが 読み込まれていない場合は、表示設定書式ファイルが未使用と言うことで fname へはヌル文字列 (fname[0] へ '\0') がセットされます。 パラメータ:char *fname 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- LoadPrFile(vhar *fname); 印刷書式ファイル fname を読み込みます。 読込みに成功すると現在の印刷書式を読み込んだ書式へ変更します。 パラメータ:char *fname 戻り値:読込みに成功した場合は 0以外の値を返します。 備考: 例題:カレントディレクトリの印刷書式ファイル A4TXT.PR1 を読込みます。 main() { LoadPrFile("A4TXT.PR1"); } ------------------------------------------------------------------------- LoadKwFile(char *fname); キーワードファイル fname を読込みます。 読込みに成功するとキーワード設定の内容は読み込んだ内容に変更されます。 パラメータ:char *fname 戻り値:読込みに成功した場合は 0以外の値を返します。 備考: 例題:カレントディレクトリのキーワードファイル MMKWD.KWD を読込みます。 main() { LoadSdFile("MMKWD.KWD"); } ------------------------------------------------------------------------- SetIMEStatus(int sw); IMEのON、OFFの状態をセットします。 sw が1であればIMEをON、sw が0であればIMEをOFFにします。 パラメータ:int sw 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetOpenFType(int sw); ファイルを開くで使用するダイアログのタイプをセットします。 sw が0であればビュアー付きのダイアログを 1であれば95標準のダイアログをセットします。 パラメータ:int sw 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- WinExec(char *fname); 外部のアプリケーションソフトを起動します。 外部のアプリケーションソフトを起動し実行します。 パラメーターを渡す場合は起動するファイル名の後に半角スペースで区切って書いて下さい。 パラメータ:char *fname 起動するファイル名 戻り値:起動に成功した場合は32以上の値を返します。     失敗した場合は32未満のエラーコードが返ります。 備考: 例題:MmSetup.exe をパラメータとして現在編集中のファイル名を渡して起動します main() { char s[500], fname[256]; GetFileName(fname); Strcpy(s, "MmSetup.exe "); Strcat(s, fname); WinExec(s); } ------------------------------------------------------------------------- WinExec2(char *fname); 外部のアプリケーションソフトを起動し非表示で実行します。 パラメーターを渡す場合は起動するファイル名の後に半角スペースで区切って書いて下さい。\par WinExec(); が実行するソフトを表示するのに対して WinExec2(); では 実行するソフトを非表示にします。DOS のソフトを実行する場合に DOS窓を 表示したくないとき等に使われてください。 \par パラメータ:char *fname 起動するファイル名\par \par 戻り値:起動に成功した場合は32以上の値を返します。\par     失敗した場合は32未満のエラーコードが返ります。\par \par 備考:\par \par 例題:WinExec(); の例を参考にして下さい。\par ------------------------------------------------------------------------- Message(char *message); メッセージを表示します。 パラメータ:char *message 表示するメッセージ文字列 戻り値:この関数に戻り値はありません。 備考: 例題:メッセージを表示します。 main() { message("MmSetup.exe を起動します。"); } ------------------------------------------------------------------------- MessageBox(int mode, char *message) メッセージとボタンを表示して押されたボタンの結果を得ます。 パラメータ:int mode 0=「OK」、1=「はい」と「いいえ」、       2=「はい」と「いいえ」と「キャンセル」のボタンを表示します。       char *message 表示するメッセージ文字列 戻り値:押されたボタンの結果によってそれぞれ     「はい」=1、「いいえ」=0、「キャンセル」=−1 が返されます。 備考: 例題:メッセージと「はい」と「いいえ」のボタンを表示し「はい」が押されたら MmSetup.exe を起動します。 main() { MessageBox(1, "MmSetup.exe を起動しますか。"); if(Result == 1) WinExec("MmSetup.exe"); } ------------------------------------------------------------------------- Sleep(int time); マクロの実行を指定した時間停止します パラメータ:int time 実行を停止する時間をミリ秒(ms)単位で指定して下さい。 戻り値:この関数に戻り値はありません。 備考: 例題:ブザーを鳴らし5秒後に MmSetup.exe を起動します。(1000ms = 1秒) main() { Beep(); Sleep(5000); WinExec("MmSetup.exe"); } ------------------------------------------------------------------------- Menu(char **tbl, int count); tbl に設定されたメニュー項目を、count 個としてメニューを表示します。 count 個分 tbl へはメニュー項目が設定されていなければなりません。 メニューの途中にセパレータを入れたい場合は、その項目へは文字の全くない文字列 (NULL文字列)を設定して下さい。 パラメータ:char **tbl メニュー項目をセットしたテーブルのアドレス       int count  メニュー項目の数 戻り値:先頭の項目を0とした選択された項目の位置が返ります。     セパレータは項目ではないので位置はありません。     [ESC]キーが押された場合は−1が返ります。 備考: 例題:メニューを表示して対応する外部のマクロを起動します。    この例では s[2] はセパレータです。 main() { char *s[4]; s[0] = "外部マクロ Test1.mac を起動します"; s[1] = "外部マクロ Test2.mac を起動します"; s[2] = ""; s[3] = "外部マクロ Test3.mac を起動します"; Menu(s, 4); if(Result == 0) MacroEx("Test1.mac"); else if(Result == 1) MacroEx("Test2.mac"); if(Result == 2) MacroEx("Test3.mac"); } ------------------------------------------------------------------------- GetKeyState(int key); 指定したキーボードのキー key が押されているかどうかを調べます。 SHIFTキーの場合は 0x10 CRTLキーの場合は 0x11 CAPSLOCKキーの場合は 0x14 を 指定して下さい。 その他のキーについては [ 7. 仮想キーコード一覧 ] をご覧ください。 Windows API GetKeyState(); と仮想キーコードの仕様は同じです。 パラメータ:int key 押されているかどうか調べるキー 戻り値:キーが押されている場合は1、押されていない場合は0が返ります。 備考: 例題:SHIFTキーが押されているか調べています。 main() { GetKeyState(0x10); } ------------------------------------------------------------------------- ChangeMruNo(int no); 使用するファイル履歴No.(1 - 5)を変更します。 変更したいファイル履歴No.(1 - 5)をセットして下さい。 5種類あるファイル履歴No.の先頭から最後までを 1 から 5 の数字で指定して下さい。 パラメータ:int no 使用するファイル履歴No.を 1 - 5 の範囲で指定して下さい 戻り値:この関数に戻り値はありません。 備考: 例題:3番目のファイル履歴No.を使用するように変更します。 main() { ChangeMruNo(3); } ------------------------------------------------------------------------- SetMruCursor(int mode); 「履歴ファイルを開く」でのカーソル位置を再現するかのモードを設定します。 0 をセットすると OFF になり 1 (0以外の値)をセットすると ON になります。 パラメータ:int mode 0 をセットすると OFF、 1 (0以外の値)をセットすると ON。 戻り値:この関数に戻り値はありません。 備考: 例題:「履歴ファイルを開く」でのカーソル位置を再現するを ON にします。 main() { SetMruCursor(1); } ------------------------------------------------------------------------- ExecTeXTool(char *fname); fname に使用するメニューファイルを指定して TeX入力ツールを起動します。 パラメータ:char *fname メニューファイルを指定するとそのメニューに従って TeX入力ツールを起動します。 0 (数字の 0)を指定すると起動している TeX入力ツールを閉じます。 戻り値:起動に成功した場合は1、失敗した場合は0が返ります。 備考: 例題:メニューファイル mmtex.mmi を指定して TeX入力ツールを起動します。 main() { ExecTexTool("c:\\mm98\\mmtex.mmi"); } ------------------------------------------------------------------------- GetVersion(); MMエディタのバージョンNo.を取得します。 バージョン 2.00の場合は200、2.30の場合は230、2.45の場合は 245 等と3桁の整数値を返します。 戻り値:バージョンNo.が3桁の整数値として返ります。 備考: ------------------------------------------------------------------------- SetToolbar(int type, int mode); ツールバーの表示のON.OFFを変更します。 type : 0 = ツールバー1、1 = ツールバー2、2 = ツールバー1、2の両方 の制御を行います。 パラメータ:int mode 1=表示、0=非表示 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetStatusbar(int mode); ステータスバーの表示のON.OFFを変更します。 パラメータ:int mode 1=表示、0=非表示 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- GetMmPath(int *path); path の指すエリアへMMの起動フォルダを得ます。 path にはフォルダ名がはいるだけのエリアが必要です。 パラメータ:char *path\par 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetMargin(int num); 1行の折り返し文字数をセットします。 パラメータ:int num 10−3200 の範囲で指定して下さい。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetPageMode(int mode); 1行の数え方が表示行モード時に、行No.へページ内行No.を表示するかを指定します。 パラメータ:int mode 1=ページ内行No.表示、0=ページ内行No.非表示 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetPageLn(int num); 1行の数え方が表示行モードで行No.へページ内行No.を表示モード時の 1ページ当たりの行数をセットします。 パラメータ:int num  2−32000の範囲で指定して下さい。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SPrint(char * buf, char *fmt, arg1, ・・・); C言語の標準関数 sprintf(); のように fmt のあとに可変個の引数を持つことが でき fmt の制御のもとにその引数を変換し buf へその文字列を出力します。 FPrint(); の sprintf()版です。 戻り値:この関数に戻り値はありません。 備考: 例題:現在の日付をカーソル位置へ出力します。 main() { int y, m, d; char buf[300]; \ GetDate(&y, &m, &d); // 日付を得る y = y - 1900; SPrint(buf, "%02d/%02d/%02d",y, m, d); // 例:98/07/31 PutStr(buf); } ------------------------------------------------------------------------- SetJumpMode(int mode); 指定行へのジャンプでのジャンプするモードを変更します。 パラメータ:int mode 0=中央行、1=現在行、2=先頭行、3=最下位行 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetShCurMode(int mode); 検索での着地行を現カーソル行に固定するかのモードを変更します。 パラメータ:int mode 0=固定しない、1=固定する 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetOpenDirStatus(int mode); ファイルを開くでの表示するフォルダのモードを変更します。 パラメータ:int mode 0=現在アクティブなテキストのフォルダ            1=前回表示されたファルダ 戻り値:この関数に戻り値はありません。 ------------------------------------------------------------------------- OpenFileName(char *fname, char *name); コモンダイアログを表示してファイル名を選択します。 選択されたファイル名はドライブ名を含むフルパスで fname にセットされます。 name には選択表示したいファイルの拡張子を指定します。 すべてのファイルを表示したい場合は "*.*" と指定します。 *.txt ファイルだけを表示したい場合は "*.txt" と指定します。 パラメータ:char *fname 選択されたファイル名を得るエリア       char *name  表示したいファイルの拡張子を指定 戻り値:ファイル名が選択された場合は0が、キャンセルされた場合は−1が返ります。 備考: ------------------------------------------------------------------------- GetEvent(); イベントマクロでのイベントNo.を取得します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetTimer(int second); second にタイマーイベントの発生する時間間隔(秒)を指定してタイマーを起動します。 これ以降、指定した間隔毎にタイマーイベントが発生し イベントNo. 9 を渡して イベントマクロ MmEvent.mac を起動します。 指定した間隔毎に実行したい処理を、このマクロに書いておけば実行されます。 イベントマクロ( MmEvent.mac)では、発生したイベントNo.を取得してそこへ実行したい マクロの動作を書いて下さい。 パラメータ:int second 戻り値:この関数に戻り値はありません 備考: 例題:5秒毎にタイマーイベントが発生するように値をセットしてタイマーを起動します。 これ以降、5秒間隔毎にタイマーイベントが発生します。 main() { SetTimer(5); } ------------------------------------------------------------------------- KillTimer(); 起動中のタイマーを停止します。 これ以降、タイマーイベントは発生しなくなります。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- WriteStatus(char *str); ステータスバーへ指定の文字列を表示します。 表示される場所は、「マクロ記録中」や「罫線の作図中」が表示されるエリアです。 表示出来る文字数は半角文字で最大12文字までです。 このエリアの表示を消したい場合はヌル文字列を渡して下さい。 戻り値:この関数に戻り値はありません。 備考: 例題1:ステータスバーへ「マクロ記録中」と表示します。 main() \{ WriteStatus("マクロ記録中"); \} 例題2:ステータスバーの表示を消します。 main() \{ WriteStatus(""); \} ------------------------------------------------------------------------- ・ファイル系 ------------------------------------------------------------------------- Open(char *fname); 新しいウインドウを開いて、ファイル fname をオープンして読み込みます。 fname が存在しない場合は新しく作成してオープンします。 fname を指定しないと何もオープンできません。 パラメータ:char *fname オープンするファイル名文字列 戻り値:fname が指定されていない場合は−1を、指定された場合は0を返します。 備考: 例題:新しいウインドウを開いて、ファイル READ.TXT をオープンします。 main() { Open("READ.TXT"); } ------------------------------------------------------------------------- Open2(char *fname); Open(); 関数と動作は同じですが、この関数ではファイルを開いたときに そのファイルが履歴にあった場合はカーソル履歴を再現してファイルを開きます。 パラメータ:char *fname オープンするファイル名文字列 戻り値:fname が指定されていない場合は−1を、指定された場合は0を返します。 備考: ------------------------------------------------------------------------- Save(); 現在のファイル内容に変更が有れば、上書き保存します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- Close(); テキストウインドウを閉じます。テキストの内容に変更があっても保存しないで閉じますので、 Close(); 実行前に保存が必要な場合は閉じる前に保存(Save();)を行って下さい。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- CloseAs(); テキストウインドウを閉じます。テキストの内容に変更があれば閉じる前に保存するかの メッセージを表示して確認を行います。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ・Cライブラリ文字列操作系 ------------------------------------------------------------------------- Strcpy(char *dest, char *src); 文字列 src を dest へコピーします。 文字列 src は dest をコピーできるだけのエリアを確保しておいて下さい。 パラメータ:char *dest コピー先の文字列       char *src  コピー元の文字列 戻り値:この関数に戻り値はありません。 備考: 例題:MmSetup.exe をパラメータとして現在編集中のファイル名を渡して起動します { char s[500], fname[256]; GetFileName(fname); Strcpy(s, "MmSetup.exe "); Strcat(s, fname); WinExec(s); } ------------------------------------------------------------------------- Strncpy(char *dest, char *src, int maxlen); 最大 maxlen 個の文字を src から dest へコピーします。 長すぎれば切り捨て、短すぎれば dest にヌル文字を付け加えます。 src の長さが maxlen と同じかそれ以上の場合には dest の 終わりにはヌル文字はつけられません。 パラメータ:char *dest  コピー先の文字列       char *src   コピー元の文字列       int maxlen  コピーする最大文字数 戻り値:この関数に戻り値はありません。 備考: dest は maxlen のエリアを確保しておいて下さい。 例題: 例題:キャプションに表示されている文字列を最大20バイト取得してカーソル位置へ表示します。 main() { char s[21], fname[256]; GetWindowText(fname); Strncpy(s, fname, 20); s[20] = 0; PutStr(s); } ------------------------------------------------------------------------- Strcat(char *dest, char *src); src を dest の最後へ追加します。 dest は src を追加してできあがる文字列を格納出来るだけ十分なエリアが 必要です。 パラメータ:char *des t 追加先の文字列       char *src  追加元の文字列 戻り値:この関数に戻り値はありません。 備考: 例題:MmSetup.exe をパラメータとして現在編集中のファイル名を渡して起動します { char s[500], fname[256]; GetFileName(fname); Strcpy(s, "MmSetup.exe "); Strcat(s, fname); WinExec(s); } ------------------------------------------------------------------------- Strcmp(char *s1, char *s2); 文字列 s1 と s2 の中の各文字を大文字と小文字を区別して比較します。 比較は各文字列の最初の文字から始めて、対応する文字に異なるものが見つかるか、 または文字列の最後に達するまで続けます。 パラメータ:char *s1, char *s2 戻り値:文字列が同じ場合は0、s1 が s2 より先の場合は負の値、s1 が s2 よりあとの場合は正の値 備考: 例題:編集中のテキストが合致なら MmSetup.exe を起動します。 main() { char fname[256]; GetFileName(fname); Strcmp(fname, "d:myapptest.doc"); if(Result == 0) WinExec("MmSetup.exe"); } ------------------------------------------------------------------------- Strcmpi(char *s1, char *s2); Strcmpi は Strcmp と同じ動作をしますが比較するときに大文字と 小文字の区別をしません。 パラメータ:char *s1, char *s2 戻り値:文字列が同じ場合は0、s1 が s2 より先の場合は負の値、s1 が s2 よりあとの場合は正の値 備考: 例題:編集中のテキストが合致(大文字と小文字の区別をしない)なら MmSetup.exe を起動します。 main() { char fname[256]; GetFileName(fname); Strcmpi(fname, "d:myapptest.doc"); if(Result == 0) WinExec("MmSetup.exe"); } ------------------------------------------------------------------------- Strlen(char *str); 文字列 src の長さを調べます。 長さは文字列の終わりのヌル文字を除いた長さです。 パラメータ:char *str 長さを調べる文字列 戻り値:文字列 src の長さを返します。 備考: 例題:編集中のファイル名の長さを調べます。 main() { char fname[256]; GetFileName(fname); Strlen(fname); } ------------------------------------------------------------------------- Atoi(char *str); 文字列 str を整数に変換します。 パラメータ:char *str 変換する文字列 戻り値:文字列 str の整数値を返します。 備考: 例題:文字列 "250" を整数値へ変換します。結果は システム変数 Result へ 250 が返ります。 main() { char s[20]; Strcpy(s, "250"); Atoi(s); } ------------------------------------------------------------------------- Itoa(int value, char *str); 整数 value をヌル文字で終了する文字列に変換して、結果を str へ 格納します。 パラメータ:int value, char *str 戻り値:この関数に戻り値はありません。 備考: 例題:整数値 250 を文字列へ変換します。結果は s[] へ "250" がセットされます。 main() { char s[20]; Itoa(250, s); } ------------------------------------------------------------------------- Memset(char *s, int c, int n); s が指す配列の先頭から n バイトに文字 c をセットします。 パラメータ:char *s, int c, int n 戻り値:この関数に戻り値はありません。 備考: 例題:s が指す配列の先頭から 20バイトを 0 で埋めます。 main() { char s[20]; Memset(s, 0, 20); } ------------------------------------------------------------------------- Strstr(char *s1, char *s2); 文字列 s1 内に文字列 s2 が最初に現れる位置を返します。 パラメータ:char *s1, char *s2 戻り値:s1 の先頭位置を0とした値で見つかった位置を返します。     見つからない場合は −1 を返します。 備考: 例題:s 内に "95" の現れる位置を探します。結果は システム変数 Result へ 12 が返ります。 main() { char *s; s = "MMエディタ95"; Strstr(s, "95"); } ------------------------------------------------------------------------- Strstri(char *s1, char *s2); 半角英字の大文字と小文字を同一視して、文字列 s1 内に文字列 s2 が最初に現れる 位置を返します。 パラメータ:char *s1, char *s2 戻り値:s1 の先頭位置を0とした値で見つかった位置を返します。     見つからない場合は −1 を返します。 備考: 例題:s 内に "editor" の現れる位置を探します。結果は システム変数 Result へ 2 が返ります。 main() { char *s; s = "MMEditor 98"; Strstri(s, "editor"); } ------------------------------------------------------------------------- Strstrp(char *s1, char *s2); 文字列 s1 内に文字列 s2 が最初に現れるアドレスを返します。 パラメータ:char *s1, char *s2 戻り値:s1 上の見つかったアドレスを返します。     見つからない場合は NULL (数字の0) を返します。 備考: 例題:s 内に "95" が最初に現れるアドレスを探します。結果は p へそのアドレスが返ります。 main() { char *s, *p; s = "MMエディタ95"; p = Strstrp(s, "95"); } ------------------------------------------------------------------------- Strchr(char *s1, int c); 文字列 s1 内に文字 c が最初に現れるアドレスを返します。 パラメータ:char *s1, int c 戻り値:s1 上の見つかったアドレスを返します。     見つからない場合は NULL (数字の0) を返します。 備考: 例題:s 内に 文字'9' が最初に現れるアドレスを探します。結果は p へそのアドレスが返ります。 main() { char *s, *p; s = "MMエディタ95"; p = Strchr(s, '9'); } ------------------------------------------------------------------------- Strrchr(char *s1, int c); 文字列 s1 内に文字 c が最初に現れるアドレスを文字列 s1 の最後の文字より探して返します。 パラメータ:char *s1, int c 戻り値:s1 上の見つかったアドレスを返します。     見つからない場合は NULL (数字の0) を返します。 備考: 例題:s 内に 文字'9' が最初に現れるアドレスを s の最後の文字より探します。 結果は p へそのアドレスが返ります。 main() { char *s, *p; s = "MM95エディタ95"; p = Strrchr(s, '9'); } ------------------------------------------------------------------------- Memcpy(char *dest, char *src, int nbyte); nbyte のブロックを src から dest へコピーします。 src は nbyte をコピーできるだけのエリアを確保しておいて下さい。 src と dest が重複する場合の動作は未定義です。 パラメータ:char *dest コピー先のエリア       char *src  コピー元のエリア       int nbyte コピーするバイト数 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ・ウインドウズ系 ------------------------------------------------------------------------- SetWindowCascade(); ウインドウをカスケード形式で表示します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetWindowVTile(); ウインドウを縦タイル形式で表示します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetWindowHTile(); ウインドウを横タイル形式で表示します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetWindowStyle(int mode); ウインドウの表示形式をカスケードかタイルへ変更します。 なおこの関数は表示形式の内部状態を変更するだけで、実際に編集中のウインドウの 表示状態は変更しません。 パラメータ:int mode  0=カスケード、1=タイル 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetTileMode(int mode); タイル表示時のタイルの形(縦長か横長)の設定をします。 なおこの関数は表示形式の内部状態を変更するだけで、実際に編集中のウインドウの 表示状態は変更しません。 パラメータ:int mode  0=縦長、1=横長 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- NextWindow(); アクティブなウインドウを次のウインドウへ移動します。 次のウインドウとは現在アクティブなウインドウの一つ下のウインドウです。 現在アクティブなウインドウは一番下へ移動します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- LoadLibrary(char *fname); fname で指定したDLLをロードします。 パラメータ:char *fname 戻り値:ロード成功の場合ハンドル番号が返ります。失敗の場合は −1 が返ります。 備考: 例題:DLL Menubar.DLL をロードします。 main() { LoadLibrary("Menubar.DLL"); } ------------------------------------------------------------------------- FreeLibrary(int handle); handle で指定したDLLをメモリから開放します。 パラメータ:int handle 開放するDLLのハンドル番号 戻り値:この関数に戻り値はありません。 備考: 例題:ハンドル番号 handle のDLLを開放します。 main() { int handle; LoadLibrary("Menubar.DLL"); handle = Result ........................... ........................... LoadLibrary(handle); } ------------------------------------------------------------------------- SetWindowText(char *text); 文字列 text をウインドウのキャプションへ表示します。 パラメータ:char *text 戻り値:この関数に戻り値はありません。 備考: 例題:編集中のファイル名を取得してキャプションへ表示します。 main() { char fname[256]; GetFileName(fname); SetWindowText(fname); } ------------------------------------------------------------------------- GetWindowText(char *text); ウインドウのキャプションへ表示されている内容を文字列 text へ取得します。 パラメータ:char *text 戻り値:text へ取得した文字数。 備考: text のエリアは256文字以上確保して下さい。 例題:キャプションに表示されている内容を取得してカーソル位置へ書き込みます。 main() { char fname[256]; GetWindowText(fname); PutStr(fname); } ------------------------------------------------------------------------- MaxWindow(); テキストウインドウを最大化して表示します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- MinWindow(); テキストウインドウを最小化して表示します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- RestWindow(); テキストウインドウが、最大化または最小化して表示されている場合、 元の大きさへ戻します。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetTileNum(int num); タイル表示の場合に同時に表示するウインドウの数を変更します。 パラメータ:int num 同時に表示するウインドウの数を指定します       2−20の範囲で指定して下さい。 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetCascadSize(int mode); カスケード表示時のウインドウの大きさの変更します。 パラメータ:int mode 0=標準、1=最大 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- SetProtectWindow(int mode); ウインドウを書き込み禁止(リードオンリーモード)にするかのモードの変更を行います。 パラメータ:int mode 0=書き込みできる、1=書き込み禁止 戻り値:この関数に戻り値はありません。 備考: ------------------------------------------------------------------------- ・ダイレクトファイルI/O系 ------------------------------------------------------------------------- LOpen(char *fname, int mode); データの読み書きのためにファイル fname をオープンします。 ファイル内のデータを読み書きするために LRead(); や LWrite(); を 使う前に呼び出します。 パラメータ:char *fname オープンするファイル名文字列       int mode  ファイルへのアクセス方法             0 読み出し専用にファイルをオープン             1 書き込み専用にファイルをオープン              2 読み書き用にファイルをオープン 戻り値:オープン出来た場合はファイルハンドル番号、失敗の場合は −1 を返します。 備考: 例題:ファイル test.txt をオープンしてファイルの内容を読み込みすべて表示します。 main() { int handle; char buf[300]; int sIns, sInd; sIns = Ins; sInd = Indent; InsMode(1); AIndent(0); LOpen("test.txt", 0); // ファイルをオープンする if(Result == -1) return; handle = Result; while(1) { KbHit(); if(Result == 0x1b) // [ESC]が押されたら中断 break; Memset(buf, 0, 256); // 読み込みバッファクリアー LRead(handle, buf, 255); // 最大255バイト読み込み if(Result == -1) break; PutStr(buf); // データを画面へ表示 if(Result < 255) // 255バイト以下の読み込みなら最後のデータ break; } LClose(handle); // ファイルを閉じる InsMode(sIns); AIndent(sInd); } ------------------------------------------------------------------------- LCreat(char *fname); 読み出し書き込み可能な通常のディスクファイルを新たに作成します。 指定されたファイル fname が存在しない場合は新たにファイルを作成し、 すでに存在する場合はそのファイルをオープンしてサイズを0バイトにします。 パラメータ:char *fname オープンするファイル名文字列 戻り値:作成出来た場合はファイルハンドル番号、失敗の場合は −1 を返します。 備考: 例題:概存のファイル test.txt をオープンして 新しく作成した newtext.txt ファイルへファイルの内容をすべてコピーしています。 main() { int handle, nhandle; char buf[300]; LOpen("test.txt", 0); // コピー元のファイルをオープン if(Result == -1) return; handle = Result; LCreat("newtext.txt"); // コピー先のファイルを新しく作成 if(Result == -1) { LClose(handle); return; } nhandle = Result; while(1) { KbHit(); if(Result == 0x1b) // [ESC]が押されたら中断 break; LRead(handle, buf, 256); // 最大256バイト読み込み if(Result <= 0) // データエンドかエラー break; LWrite(nhandle, buf, Result); // 読み込んだバイトを書き込み if(Result < 256) // 256バイト以下の読み込みなら最後のデータ break; } LClose(handle); // ファイルを閉じる LClose(nhandle); // ファイルを閉じる } ------------------------------------------------------------------------- LSeek(int handle, int offset, int org); ディスクファイル内の別の位置へファイルポインタを移動します。 あらかじめ LCreat();、LOpen(); のいづれかでオープンしておいた ファイルポインタの位置を変更します。 ファイルポインタは LRead(); や LWrite(); で処理を開始する位置を 示します。 パラメータ:int handle 対象とするファイルのハンドル番号       int offset ポインタの移動バイト数       int org   ポインタの移動方向       0     ファイルポインタをファイルの先頭から offset バイト移動する             offset と org の両方を0にすると、ポインタは ファイルの先頭へ移動する       1     ファイルポインタをファイルの現在位置から offset バイト移動する       2     ファイルポインタをファイルの終わりから offset バイト移動する 戻り値:ファイルの先頭からファイルポインタまでのオフセット。 備考: 例題: main() { LSeek(handle, 0, 0); // ファイルポインタをファイルの先頭へ移動します。 LSeek(handle, 10, 1); // ファイルポインタを現在位置から10バイト後ろへ移動します。 LSeek(handle, 0, 2); // ファイルポインタをファイルの終端へ移動します。 } ------------------------------------------------------------------------- LClose(int handle); ディスクファイルをクローズします。 LCreat();、LOpen(); のいづれかでオープンしたディスクファイルを クローズします。 クローズするとすぐにファイルハンドル番号は無効となります。 クローズされたファイルは再オープンされるまで読み書き出来ません。 パラメータ:int handle クローズするファイルのハンドル番号 戻り値:ファイルがクローズされた場合は 0、エラーの場合は -1 を返します。 備考: ファイルを作成したりオープンした後は、必ずクローズしなければなりません。 ファイルをオープンしたまま終了した場合、そのファイルでのデータの書き込みが 反映されていなかったり最悪の場合ファイルの内容が壊れることもあります。 例題:LOpen();,LCreat(); の例をご覧ください。 ------------------------------------------------------------------------- LRead(int handle, char *buf, int bytes); ファイルポインタの現在位置から開始して、ディスクファイルからデータを 読み出します。 最初にファイルをオープンしたときは、ファイルポインタはファイルの先頭に 設定されています。 LRead(); を使いデータを読み出すに従いポインタは読み取ったバイト数 だけ移動します。 ポインタのファイル内の位置は、LSeek(); で変更出来ます。 パラメータ:int handle  対象とするファイルのハンドル番号       char *buf   データを読み込むバッファ              バッファのサイズは少なくとも bytes 必要です       int bytes  読み出すバイト数 戻り値:ファイルから実際に読み取ったバイト数。エラーの場合は −1 を返します。 備考: 例題:LOpen();,LCreat();の例をご覧ください。 ------------------------------------------------------------------------- LWrite(int handle, char *buf, int bytes); ファイルポインタの現在位置から開始して、ディスクファイルへデータを 書き込みます。 最初にファイルをオープンしたときは、ファイルポインタはファイルの先頭に 設定されています。 LWrite(); を使いデータを書き込むに従いポインタは書き込んだバイト数 だけファイルの終わりへ移動します。 ポインタのファイル内の位置は、LSeek();で変更出来ます。 パラメータ:int handle  対象とするファイルのハンドル番号       char *buf   データを書き込むバッファ              バッファのサイズは少なくとも bytes 必要です       int bytes  書き込むバイト数 戻り値:ファイルへ実際に書き込んだバイト数。エラーの場合は −1 を返します。 備考: 例題:LCreat(); の例をご覧ください。 ------------------------------------------------------------------------- DeleteFile(char *fname); 指定したファイル fname を削除します。 パラメータ:char *fname 削除するファイル名文字列 戻り値:削除出来た場合は 0 以外の値、失敗の場合は 0 を返します。 備考: 例題:カレントディレクトリに存在するファイル test.txt を削除します。 main() { DeleteFile("test.txt"); // ファイル test.txt を削除 } ------------------------------------------------------------------------- ・レジストリ系 ------------------------------------------------------------------------- GetRegiStr(char *entry, char *keyname, char *str, int size); レジストリよりMMエディタ関連の文字列のデータを読み込みます。 entry,keyname に読み出したいエントリー名、キー名を指定して str へ最大 size バイトのデータを読み込みます。 該当するキー名が存在しない場合には str へはヌル文字列がセットされます。 プログラミングに必要と思われるMMの状態は各システム変数で参照出来ますので、 この関数を使う必要はほとんどないと思います。 パラメータ:char *entry, char *keyname, char *str, int size 戻り値:この関数に戻り値はありません。 備考: データを読み込む str は size バイトのエリアを確保しておく必要が あります。 例題:エントリー名 Kankyou、キー名 BackupDir の文字列データを取得して その内容を現カーソル位置へ表示します。 main() { char buf[300]; GetRegiStr("Kankyou", "BackupDir", buf, 256); PutStr(buf); } ------------------------------------------------------------------------- GetRegiInt(char *entry, char *keyname, int def); レジストリよりMMエディタ関連の整数値のデータを読み込みます entry, keyname に読み出したいエントリー名、キー名を指定して ください。 def には一致するキー名が見つからなかったときに返される値を指定してください。 プログラミングに必要と思われるMMの状態は各システム変数で参照出来ますので、 この関数を使う必要はほとんどないと思います。 パラメータ:char *entry, char *keyname, int def 戻り値:該当するキー名の整数値、該当するキー名が存在しない場合には def に セットした値が返ります。 備考: 例題:エントリー名 Show、キー名 AIndent の整数値を取得します。 main() { GetRegiInt("Show", "AIndent", 0); } ------------------------------------------------------------------------- GetIniStr(char *entry, char *keyname, char* str, int size, char *inifname); 指定のINIファイルより文字列データを読み込みます。 INIファイル名はフルパスで指定して下さい。パス名が省略された場合は INIファイルは Windows のフォルダにあるものと仮定されます。 entry, keyname へ読み出したいエントリー名、キー名を指定してください。 str へINIファイルより文字列データを読みこみます。 size へ読み込むデータの最大バイト数を指定して下さい。この値は通常は str の サイズを指定します。 inifname へは対象となるINIファイル名を指定します。 パラメータ:char *entry, char *keyname, char* str, int size, char *inifname 戻り値:この関数に戻り値はありません。 備考: 例題:MMの起動ディレクトリにあるINIファイル mm.ini の エントリー名 Kankyou、 キー名 BackupDir にセットされている文字列を buf へ読み込みます。 main() { char fname[300], buf[300]; GetMmPath(fname); Strcat(fname, "\\mm.ini"); GetIniStr("Kankyou", "BackupDir", buf, 300, fname); } ------------------------------------------------------------------------- GetIniInt(char *entry, char *keyname, int def, char *inifname); 指定のINIファイルより整数値データを読み込みます。 INIファイル名はフルパスで指定して下さい。パス名が省略された場合は INIファイルは Windows のフォルダにあるものと仮定されます。 entry, keyname へ読み出したいエントリー名、キー名を指定してください。 def には一致するキー名が見つからなかったときに返される値を指定してください。 inifname へは対象となるINIファイル名を指定します。 パラメータ:char *entry, char *keyname, int def, char *inifname 戻り値:該当するキー名の整数値、該当するキー名が存在しない場合には def に セットした値が返ります。 備考: 例題:MMの起動ディレクトリにあるINIファイル mm.ini の エントリー名 Show、 キー名 AIndent にセットされている整数値を num へ読み込みます。 main() { int num; char fname[300]; GetMmPath(fname); Strcat(fname, "\\mm.ini"); num = GetIniInt("Show", "AIndent", 0, fname); } ------------------------------------------------------------------------- SetIniStr(char *entry, char *keyname, char* str, char *inifname); 指定のINIファイルへ文字列データを書き込みます。 INIファイル名はフルパスで指定して下さい。パス名が省略された場合は INIファイルは Windows のフォルダにあるものと仮定されます。 entry, keyname へ読み出したいエントリー名、キー名を指定してください。 str にある文字列データをINIファイルへ書き込みます。 inifname へは対象となるINIファイル名を指定します。 パラメータ:char *entry, char *keyname, char* str, char *inifname 戻り値:この関数に戻り値はありません。 備考: 例題:MMの起動ディレクトリにあるINIファイル mm.ini の エントリー名 Kankyou、 キー名 BackupDir に buf にセットされた文字列を書き込みます。 main() { char buf[300], fname[300]; Strcpy(buf, "c:\\mm98\\trash"); GetMmPath(fname); Strcat(fname, "\\mm.ini"); SetIniStr("Kankyou", "BackupDir", buf, fname); } ------------------------------------------------------------------------- 6. コマンドキーの実行 マクロよりコマンドキーを実行するには PutChr(int ch); を使用します。 キーボードで実行できる全てのコマンドキーを呼び出すことができます。 パラメータの上位バイトにコマンドキーNo.下位バイトに0をセットして 呼び出します。 詳しくは、[ PutChr(int ch); ] の説明をご覧ください。 具体的なコマンドキーNo.に付いては、MMヘルプの [キーコマンド一覧] を ご覧ください。 ------------------------------------------------------------------------- ------------------------------------------------------------------------- 7. 仮想キーコード一覧 マウスまたはキーボードで対応するもの 値(16進数) マウスの左ボタン 01 マウスの右ボタン 02 BackSpaceキー 08 Tabキー 09 Clearキー 0C Enterキー 0D Shiftキー 10 Ctrlキー 11 Altキー 12 Pauseキー 13 CapsLockキー 14 Escキー 1B Spaceキー 20 PageUpキー 21 PageDownキー 22 Endキー 23 Homeキー 24 ←キー 25 ↑キー 26 →キー 27 ↓キー 28 Selectキー 29 Executeキー 2B PrintScreenキー 2C Insキー 2D Delキー 2E Helpキー 2F 0-9キー 30-39 A-Zキー 41-5A テンキーパッドの0キー 60 テンキーパッドの1キー 61 テンキーパッドの2キー 62 テンキーパッドの3キー 63 テンキーパッドの4キー 64 テンキーパッドの5キー 65 テンキーパッドの6キー 66 テンキーパッドの7キー 67 テンキーパッドの8キー 68 テンキーパッドの9キー 69 乗算キー 6A +(プラス)キー 6B セパレートキー 6C 引き算キー 6D 小数点キー 6E 割り算キー 6F F1-F24キー 70-87 NumLockキー 90 ScrollLockキー 91 ------------------------------------------------------------------------- ------------------------------------------------------------------------- 8. エラーメッセージ   1. エラーメッセージについて   2. 字区解析エラーメッセージ   3. コード展開エラーメッセージ   4. コード実行エラーメッセージ ------------------------------------------------------------------------- 1. エラーメッセージについて 読み込まれたマクロプログラムは、まず字区解析されコード展開されます。 この間にエラーが生じるとエラーNo.とエラーメッセージを表示して終了します。 エラーがなくコード展開が正常に終わるとコードを実行します。 ------------------------------------------------------------------------- 2. 字区解析エラーメッセージ 以下の字区解析エラーメッセージがあります。左端の数字はエラーNo.です。  1 マクロエラーが発生しました  2 サポートされていないキーワードです  3 8 or 9 は8進数ではありません  4 ヌル1文字定数があります  5 1文字定数フォーマットエラー  6 文字列定数フォーマットエラー  7 コメントで終了マークがありません  8 無効な文字です  9 コントロール文字です 10 文字列登録オーバーフロー 11 固定変数登録オーバーフロー ------------------------------------------------------------------------- 3. コード展開エラーメッセージ 以下のコード展開エラーメッセージがあります。左端の数字はエラーNo.です。 21 変数の二重登録です 22 登録変数のサイズが0です 23 変数名は登録されていません 24 関数の二重登録です 25 関数名はすでに登録されています 26 関数が登録されていません 27 識別子.変数 展開データエラー 28 展開データエラー 29 代入文 る展開データエラー 30 関数の呼び出し 展開データエラー 31 変数のサイズが0です 32 ADD 右の変数エラー 33 SUB 右の変数エラー 34 配列 左の変数エラー 35 数字.定数 左の変数エラー 36 代入文 左の変数エラー 37 関数の呼び出し 左の変数エラー 38 代入文で左項目(固定変数)エラー 39 ポインタ アドレス処理エラー 40 変数の型エラー 41 BREAK がループの外です 42 プログラムのネステングエラー 51 認識できない文法があります 52 関数の引き数 文法エラー 53 変数の形宣言がありません 54 次の関数、変数、定数がありません 55 が必要な位置で見つかりません 56 変数 登録オーバーフロー 57 変数名参照ができません 58 関数 登録オーバーフロー 59 関数名、変数名 登録オーバーフロー 60 展開データ 登録オーバフロー 61 展開データが参照できません 62 変数(ポインタ,配列)の形 登録オーバフロー 63 変数入替ができません 64 右の変数処理ができません 65 左の変数処理ができません 66 アドレス処理ができません 67 プログラムのネスティング オーバフロー 68 プログラムのネスティング オーバフロー 69 プログラムのネスティング アンダフロー 70 コードデータ登録 オーバフロー ------------------------------------------------------------------------- 4. コード実行エラーメッセージ 以下のコード実行エラーメッセージがあります。左端の数字はエラーNo.です。 91 スタックオーバーフロー    大域変数と自動変数の合計のサイズが許容範囲を超えたときに発生します。 92 終了時で 疑似スタックエラー    コード実行は正常に終了しましたが関数呼び出しの引数のPUSHとPOPの数が 全体で合っていません。このエラーは引数の数を誤ってセットして関数を 呼び出したときに発生します。 93 代人で スタックエラー 94 実行コードエラー 95 関数の引き数の数があっていません 96 存在しない関数が呼ばれています 97 POPUP 疑似スタック オーバーフロー 関数の戻り口でスタックの状態を関数の入り口の状態に戻した時に スタックポインタの値がスタックの上限を越えました。 98 PUSH スタック オーバーフロー スタックへの書き込み中にスタックの上限を越えました。 99 POP スタック アンダーフロー スタックからの読み込み中にスタックポインタの値がスタックの下限を 越えました。 ------------------------------------------------------------------------- -------------------------------------------------------------------------