コントロールユーティリティライブラリ

ユーティリティライブラリ

作成日:2000/06/01
更新日:2001/03/11

コントロールユーティリティライブラリについて
ダウンロード  仕様  使用方法
制限事項  著作権・転載条件など


◆コントロールユーティリティライブラリについて
 ・コントロールクラスに対して,よく使用するコードをまとめたライブラ
  リです。
 ・現在のところ,ボタンメニュー,共通,ダイアログ,エディタ,リスト
  クラスに関する関数と,ファイル操作とメモリ操作に関する関数があり
  ます。
 ・随時,関数を追加していきます。
◆動作環境
 ・シャープザウルスシリーズ
 ・動作確認機種:MI-310
◆更新履歴
 2000/06/01 Ver1.00
       ・公開開始。
 2000/06/30 Ver1.01
       ・COM_ScrollUpdateList関数を追加。
        ScrollUpdateIDメッセージに相当。
 2001/03/07 Ver1.10
       ・SetHeapSize関数の問題に対応。
        SZAB4.30の2001/02/28のアップデートに対応。
 2001/03/11 Ver1.11
       ・SetHeapSize関数の前にPackHeapArea関数をコール。
        FAQ1008の問題に対応。

◆ダウンロード
 ライブラリ+ヘッダファイル+説明書
  CtrlUtil-111.lzh
 ソースファイル+ヘッダファイル+説明書
  CtrlUtil-111s.lzh

◆仕様
 1.共通関係
   ====================================
   形 式:void COM_SendControlCall(int partID, CONTROLHD ctrlHd,
                                USHORT msgID)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
       msgID  メッセージID
   戻り値:なし

   概 要:partIDで指定された部品に対して,msgIDで示されるメッセージを送信
       する。
       メッセージIDのみのメッセージを送信する場合に使用する。

    例 :/* リストクラスに対して,スクロールアップメッセージを送信する。
       */
       COM_SendControlCall(listPart, AplForm->Control, ScrollUpID);

   ====================================
   形 式:void COM_RedispControl(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定された部品に対して,RedispIDメッセージを送信する。

   ====================================
   形 式:void COM_ToolOpenControl(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定された部品に対して,ToolOpenIDメッセージを送信する。

   注 意:モーダルダイアログクラス,モードレスダイアログクラスに対しては,
       使用しないで下さい。

   ====================================
   形 式:void COM_ToolCloseControl(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定された部品に対して,ToolCloseIDメッセージを送信する。

   注 意:モーダルダイアログクラス,モードレスダイアログクラスに対しては,
       使用しないで下さい。

   ====================================
   形 式:void COM_SetNormalControl(int partID, CONTROLHD ctrlHd,
                                 USHORT data1, USHORT data2)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
       data1  はじめ
       data2  おわり
   戻り値:なし

   概 要:partIDで指定された部品を通常表示にする。
       対象となるクラスにより,data2の有効/無効が異なる。

    例 :/* リストクラス0〜3を通常表示にする。 */
       COM_SetNormalControl(listPart, AplForm->Control, 0, 3);

       /* クリックボタンクラスを通常表示にする。 */
       COM_SetNormalControl(btnPart, AplForm->Control, 1, 1);

   ====================================
   形 式:void COM_SetHiliteControl(int partID, CONTROLHD ctrlHd,
                                 USHORT data1, USHORT data2)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
       data1  はじめ
       data2  おわり
   戻り値:なし

   概 要:partIDで指定された部品をハイライト表示にする。
       対象となるクラスにより,data2の有効/無効が異なる。

    例 :/* アイコンセレクトボタンクラスをハイライト表示にする。 */
       COM_SetNormalControl(icnSelBtnPart, AplForm->Control, 1, 1);

       /* 2次元ボタンクラスをハイライト表示にする。 */
       COM_SetNormalControl(tblBtnPart, AplForm->Control, 2, 4);

   ====================================
   形 式:void COM_ScrollUpControl(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定された部品にScrollUpIDメッセージを送信する。

   ====================================
   形 式:void COM_ScrollDownControl(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定された部品にScrollDownIDメッセージを送信する。

   ====================================

 2.ボタンメニュークラス
   ====================================
   形 式:int COM_AddMenuItem(UCHAR **MenuList, UCHAR **MenuAttr,
                           int size, int num, UCHAR *menuStr)
   引 数:MenuList メニュー文字列リソースへのポインタ
       MenuAttr メニュー属性リソースへのポインタ
       size     (現在の)メニュー項目のサイズ
       num      (現在の)メニュー項目数(1〜)
       menuStr  追加するメニュー項目の文字列
   戻り値:正常終了  >0 メニュー項目追加後のサイズ
       異常終了 ==0 メニュー項目の領域確保失敗

   概 要:動的にメニューを作成する場合に,文字列のみを指定して動的に追加す
       る。
       ただし,メニュー属性は何もなし(=0)に設定する。
       1つめのメニューを追加する場合には,sizeには 2を指定する必要があ
       る。2つ目以降は,戻り値で得られた数値を使用する。

    例 :/* メニューを動的に作成する。 */
       *MenuList = NULL;
       *MenuAttr = NULL;
       size = 2;
       for(i=0; i<num; i++) {
           size = COM_AddMenuItem(MenuList, MenuAttr,
                                  size, i+1, menuStr[i]);
           if (size == 0) {
               /* エラー処理 */
           }
       }

   ====================================

 3.ダイアログクラス
   ====================================
   形 式:void     COM_DispWarningDialog(UCHAR *titleStr, UCHAR *mesStr)
   引 数:titleStr タイトル文字列
       mesStr   メッセージ文字列
   戻り値:なし

   概 要:一定時間表示して,自動的にクローズする形式のアラートボックスを表
       示する。
       タイトル文字列がNULLあるいは""の場合には,タイトルを使用しない。

   ====================================
   形 式:void     COM_DispConfirmDialog(UCHAR *titleStr, UCHAR *mesStr)
   引 数:titleStr タイトル文字列
       mesStr   メッセージ文字列
   戻り値:なし

   概 要:「確認」ボタンが押されるまで表示し続ける形式のアラートボックスを
       表示する。
       タイトル文字列がNULLあるいは""の場合には,タイトルを使用しない。

   ====================================
   形 式:USHORT   COM_DispYesNoDialog(UCHAR *titleStr, UCHAR *mesStr)
   引 数:titleStr タイトル文字列
       mesStr   メッセージ文字列
   戻り値:「はい」を選択  = DefBtnYesID
       「いいえ」を選択 = DefBtnNoID

   概 要:「はい」「いいえ」を選択する形式のアラートボックスを表示する。
       タイトル文字列がNULLあるいは""の場合には,タイトルを使用しない。

   ====================================
   形 式:WINDOWHD COM_OpenProgDialog(UCHAR *titleStr, UCHAR *mesStr)
   引 数:titleStr タイトル文字列
       mesStr   メッセージ文字列
   戻り値:クローズに必要なウィンドウハンドル

   概 要:明示的にクローズされるまで表示する形式のアラートボックスを表示す
       る。
       タイトル文字列がNULLあるいは""の場合には,タイトルを使用しない。

   ====================================
   形 式:void     COM_CloseProgDialog(WINDOWHD wH)
   引 数:titleStr タイトル文字列
       mesStr   メッセージ文字列
   戻り値:なし

   概 要:COM_OpenProgDialog関数での戻り値を,引数wHに与えて,オープン中の
       アラートボックスをクローズする。

   ====================================

 4.エディタクラス
   ====================================
   形 式:BOOLEAN COM_AddEditPartID(int partID)
   引 数:partID 部品名
   戻り値:正常終了 TRUE 
       異常終了 FALSE

   概 要:partIDで指定されたエディタを登録する。
       ライブラリ内部にエディタ管理領域を確保する。
       最初に登録されたエディタが自動的にアクティブ状態になる。
       フォームを抜ける時などに,COM_DelEditPartIDs関数を呼び出して,ラ
       イブラリ内部に確保したエディタ管理領域を解放する必要がある。

   ====================================
   形 式:BOOLEAN COM_DelEditPartIDs()
   引 数:なし
   戻り値:正常終了 TRUE 
       異常終了 FALSE

   概 要:COM_AddEditPartID関数によりライブラリ内部に確保されたエディタ管
       理領域を解放する。

   ====================================
   形 式:int     COM_GetActiveEditor()
   引 数:なし
   戻り値:現在アクティブな部品名

   概 要:現在アクティブなエディタを取得する。
       アクティブエディタがない場合には,0を返す。

   ====================================
   形 式:void    COM_SetActiveEditor(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定されたエディタをアクティブ状態にする。

   ====================================
   形 式:void    COM_SetInactiveEditor(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定されたエディタを非アクティブ状態にする。

   ====================================
   形 式:void    COM_ChangeActiveEditor(CONTROLHD ctrlHd)
   引 数:ctrlHd コントロールテーブル
   戻り値:なし

   概 要:エディタ管理領域にある次のエディタをアクティブ状態にする。

   ====================================
   形 式:void    COM_RedispActiveEditor(CONTROLHD ctrlHd)
   引 数:ctrlHd コントロールテーブル
   戻り値:なし

   概 要:現在アクティブなエディタを再表示する。

   ====================================
   形 式:void    COM_GetStrEditor(int partID, CONTROLHD ctrlHd, UCHAR *buf)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
       buf    文字列(返答用)
   戻り値:なし

   概 要:partIDで指定されたエディタに設定されている文字列を取得する。

   ====================================
   形 式:void    COM_SetStrEditor(int partID, CONTROLHD ctrlHd, UCHAR *buf)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
       buf    文字列
   戻り値:なし

   概 要:partIDで指定されたエディタにbufで指定された文字列を設定する。

   ====================================
   形 式:void    COM_EditStrActiveEditor(CONTROLHD ctrlHd, UCHAR *buf)
   引 数:ctrlHd コントロールテーブル
       buf    文字列
   戻り値:なし

   概 要:現在アクティブなエディタにbufで指定された文字列を設定する。

   ====================================

 5.リストクラス
   ====================================
   形 式:void COM_DispStrFontList(WINDOWHD wH, UCHAR *listStr,
                                UCHAR fontSize,
                                short X1, short Y1, short X2, short Y2)
   引 数:wH       ウィンドウハンドル
       listStr  リストに表示する文字列
       fontSize フォントサイズ
       X1       リスト(文字列)の表示領域左上X座標
       Y1       リスト(文字列)の表示領域左上Y座標
       X2       リスト(文字列)の表示領域右下X座標
       Y2       リスト(文字列)の表示領域右下Y座標
   戻り値:なし

   概 要:指定領域内にlistStrで指定された文字列を,指定されたフォントサイ
       ズで描画する。文字色は黒色のみ。FSETで描画。

   ====================================
   形 式:void COM_DispStrList(WINDOWHD wH, UCHAR *listStr,
                            short X1, short Y1, short X2, short Y2)
   引 数:wH       ウィンドウハンドル
       listStr  リストに表示する文字列
       X1       リスト(文字列)の表示領域左上X座標
       Y1       リスト(文字列)の表示領域左上Y座標
       X2       リスト(文字列)の表示領域右下X座標
       Y2       リスト(文字列)の表示領域右下Y座標
   戻り値:なし

   概 要:フォントサイズQP48_CHRで文字列を描画する。

   ====================================
   形 式:void COM_SettingBarList(int partID, CONTROLHD ctrlHd,
                               USHORT allNum, USHORT offset,
                               USHORT activeNum)
   引 数:partID    部品名
       ctrlHd    コントロールテーブル
       allNum    全リスト数
       offset    表示開始リスト番号(0〜)
       activeNum アクティブなリスト番号(0〜)
   戻り値:なし

   概 要:partIDで指定されたリストを,指定されたとおりに表示し直す(スクロ
       ール等)。

   ====================================
   形 式:void COM_SetHiliteList(int partID, CONTROLHD ctrlHd)
   引 数:partID 部品名
       ctrlHd コントロールテーブル
   戻り値:なし

   概 要:partIDで指定されたリストに対して,現在アクティブなリスト番号をハ
       イライト表示する。

   ====================================
   形 式:void COM_ScrollUpdateList(int partID, CONTROLHD ctrlHd,
                                 USHORT allNum, USHORT dispNum,
                                 USHORT offsetNum)
   引 数:partID    部品名
       ctrlHd    コントロールテーブル
       allNum    全リスト数
       dispNum   表示リスト数
       offsetNum 表示開始リスト番号(0〜)
   戻り値:なし

   概 要:partIDで指定されたリストあるいはスクロールバーに対して,
       ScrollUpdateIDメッセージを送信して,表示し直す。

   ====================================

 6.ファイル操作関係
   ====================================
   形 式:BOOLEAN   COM_IsValidFileName(UCHAR *fileName)
   引 数:fileName ファイル名あるいはディレクトリ名
   戻り値:正しい   TRUE
       正しくない FALSE

   概 要:fileNameで指定された文字列(ドライブ名およびディレクトリセパレー
       タは省いておく)が,ザウルスで規定されているファイル名あるいはデ
       ィレクトリ名として正しいかどうかを返す。
       8.3形式で,使用できる文字は0-9,A-Z,_のみ。(ピリオドを除き)

   ====================================
   形 式:BOOLEAN   COM_ConvertFileName(UCHAR *pathName)
   引 数:pathName 絶対パス名
   戻り値:ファイル名の変換が発生した TRUE
       ファイル名を変換しなかった FALSE

   概 要:pathNameで指定された絶対パス名に対して,英小文字を英大文字に変換
       し,ファイル名部分が8.3形式でない場合には,自動的に8.3形式に変換
       する。
       使用されている文字がザウルスで規定されているものかどうかのチェッ
       クはしない。
       ただし,ディレクトリ名部分については,8.3形式に変換しない。
       変換ルールは,以下のとおり。
       ・拡張子は前から3文字までにする。
        拡張子の判断は,ファイル名の最初のピリオド以降とする。
        2つめのピリオド以降は無視。
       ・ファイル名は8文字までにする。
        7文字目を'_'に,8文字目を'0'〜'9', 'A'〜'Z'にする。
        '0'から順に変換し,存在しないファイル名に確定する。

    例 :F0:\TEXT\LONGFileName.text
         −>F0:\TEXT\LONGFI_0.TEX

   ====================================
   形 式:ERRORCODE COM_FileSeek(FILEHD fHd, FMOVEMODE moveMode, long len)
   引 数:fHd      ファイルハンドル
       moveMode 移動モード
                (FC_FROM_FILETOP, FC_FROM_NOWPOS, FC_FROM_FILEEND)
       len      移動するバイト数(負もあり)
   戻り値:正常終了 =0
       異常終了 <0

   概 要:SZABで用意されているFileMovePtr関数と異なり,MI-10でも動作するよ
       うに,一旦ファイルの先頭に移動した後,指定位置に移動させている。

   ====================================
   形 式:ULONG     COM_FileRead(FILEHD fHd, UCHAR *pBuf, ULONG len)
   引 数:fHd  ファイルハンドル
       pBuf 読み出しデータ格納バッファ(返答用)
       len  読み出したいバイト数
   戻り値:正常終了 >=0 実際に読み出したバイト数
       異常終了 =0xFFFFFFFF

   概 要:ファイルから指定バイト数読み出す。実際に読み出したバイト数を戻り
       値として返す。読み込みモードは,FC_FILE_END_PHとする。
       ファイルの最後まで来ている時には,戻り値に 0が返る。

   ====================================
   形 式:ULONG     COM_FileWrite(FILEHD fHd, UCHAR *pBuf, ULONG len)
   引 数:fHd  ファイルハンドル
       pBuf 書き込みデータ格納バッファ
       len  書き込みたいバイト数
   戻り値:正常終了 >=0 実際に書き込んだバイト数
       異常終了 =0xFFFFFFFF

   概 要:ファイルに指定バイト数書き込む。実際に書き込んだバイト数を戻り値
       として返す。

   ====================================
   形 式:ERRORCODE COM_FileGets(FILEHD fHd, UCHAR *pBuf, ULONG len)
   引 数:fHd  ファイルハンドル
       pBuf 読み出しデータ格納バッファ
       len  読み出し最大バイト数
   戻り値:正常終了 =0
       異常終了 <0

   概 要:ファイルから改行コードが見つかるかEOF条件が見つかるまで,pBufで
       指定されたバッファに読み出す。'\0'で終端する。
       改行コード'\r'と'\n'は読み飛ばす。

   ====================================
   形 式:ERRORCODE COM_FilePuts(FILEHD fHd, UCHAR *pBuf)
   引 数:fHd  ファイルハンドル
       pBuf 書き込みデータ格納バッファ
   戻り値:正常終了 =0
       異常終了 <0

   概 要:'\0'で終端されている文字列pBufをファイルに書き込み,続いて改行コ
       ードとして'\r'と'\n'を書き込む。

   ====================================
   形 式:ERRORCODE COM_CopyFileSize(FILEHD sHd, FILEHD dHd, ULONG size)
   引 数:dHd  コピー先ファイルハンドル
       sHd  コピー元ファイルハンドル
       size コピーバイト数
   戻り値:正常終了 =0
       異常終了 <0

   概 要:コピー元ファイルから,sizeで指定されたバイト数読み出し,コピー先
       ファイルに書き込む。

   ====================================
   形 式:ERRORCODE COM_CopyFile(UCHAR *dFile, UCHAR *sFile)
   引 数:dFile コピー先ファイル名(絶対パス名)
       sFile コピー元ファイル名(絶対パス名)
   戻り値:正常終了 =0
       異常終了 <0

   概 要:コピー元ファイルの内容を,コピー先ファイルにコピーする。
       コピー先ファイルが存在しない場合には,作成する。
       コピー元ファイルは,コピー後削除しない。

   ====================================


 7.メモリ操作関係
   ====================================
   形 式:PTR  COM_Malloc(int Size)
   引 数:Size メモリ確保バイト数
   戻り値:正常終了 >0 メモリ領域へのポインタ
       異常終了 =NULL

   概 要:Sizeバイトのメモリ領域を確保する。
       メモリ内容は初期化されていない。
       一般的なmalloc関数に相当する。

   ====================================
   形 式:PTR  COM_Realloc(PTR srcPtr, int Size)
   引 数:srcPtr メモリ領域を変更するポインタ
       Size   変更後のメモリ確保バイト数
   戻り値:正常終了 >0 新たに確保したメモリ領域へのポインタ
       異常終了 =NULL

   概 要:srcPtrで指定されたメモリ領域を,Sizeバイトに変更する。
       以前のメモリ領域の内容は確保される。増加分のメモリ領域は初期化さ
       れない。
       異常終了時,srcPtrの値は変更しない。
       一般的なrealloc関数に相当する。

   ====================================
   形 式:void COM_Free(PTR Ptr)
   引 数:Ptr メモリ領域へのポインタ
   戻り値:なし

   概 要:Ptrで指定されたメモリ領域を解放する。
       一般的なfree関数に相当する。

   ====================================


◆使用方法
 1.libCtrlUtil.aをSZABインストールディレクトリの下の lib ディレク
   トリにコピーする。
 2.CtrlUtil.hをSZABインストールディレクトリの libheader/c ディレ
   クトリにコピーする。
   あるいは,各プロジェクトのディレクトリの csrc ディレクトリの下
   にコピーする。
 3.SZAB統合開発環境のリンカオプション LKFLAGS2 に -lCtrlUtil を追
   加する。

◆制限事項
 ・特になし。

◆著作権・転載条件など
 ・本ライブラリは,制限なしで使用可能です。自由に使用してください。
  但し,本ライブラリを使用して生じるあらゆる障害に対して,一切責任
  を負いません。

コントロールユーティリティライブラリについて
ダウンロード  仕様  使用方法
制限事項  著作権・転載条件など

MOREソフト