コントロールユーティリティライブラリ
ユーティリティライブラリ
作成日: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ソフト