5. ユニット
ユニットによるソフトウェア部品の提供
Text-Cでは、テキストで部品ユニットの機能が使用できます。
例えばMBXユニットは、ディレクトリ内のファイル一覧をテキスト形式で取得し、内容の更新をおこなう部品です。
ユニットの利用はnewunit APIを用います。
HTEXT mbx = newunit(ID_MBX);
newunit APIは新規にテキストを作成し、引数で指定した部品ユニットの機能をテキストに組み込みます。
ユニットの機能は、プロパティのセット/取得と、メソッド呼び出しで利用します。プロパティやメソッドはユニットごとに異なります。
例えば、MBXユニットはloadプロパティにCLM文字列をセットすると、指定のディレクトリをロードします。
mbx.clmload = "c:\\editor";
プロパティにはテキストやSTRを指定する場合もあります。この場合はプロパティの名前の前にtextを付けます。
mbx.textfilter = text;
プロパティに代入した結果は、代入が成功したかどうかを示すint値になります。
printf("%d\n",mbx.textfilter = text);
メソッドを呼び出すには、次を記述します。
mbx.reload();
mbxのreloadメソッドを呼び出しています。メソッド呼び出しの結果は、整数値になります。
newメソッドは特別な意味を持ち、返り値は新規作成のテキストになります。テキストは、newメソッドを呼び出した関数が処理を終えると自動deleteされます。テキストは関数の所有になり、ユニットの所有にはなりません。
テキストを引数にとるメソッドもあります。()内にテキストを記述します。
mbx.gethdr(text);
アプリケーションユニット
Windowsのアプリケーションのように、タイトルバー・メニューバー・ステータスバー付きのトップレベルウィンドウを表示するユニットがあります。
HTEXT app = appnew(ID_MYAPP);
ID_MYAPPのようにアプリケーションの名前を識別値で指定します。
appsetproc APIで、ウィンドウプロシジャをセットします。ウィンドウプロシジャではメニューコマンドが選択されたときの動作などを記述します。
appsetproc(app,myappproc);
次を記述して、ウィンドウタイトルやメニューのプロパティを設定します。
app.wa.clmtitle = "MY APP";
app.szmenu = menu_main;
app.szmenul = leftmenu;
ウィンドウの中身を作成して、開きます。
HTEXT text = new();
HVIEW v = vnew(text,app.w,WS_VISIBLE|TWS_LIST|WS_TABSTOP|WS_VSCROLL,WID1,0);
app.open();
アプリケーションのプロパティ:
wa | (get)(HWND)アプリケーションのトップレベルのウィンドウハンドル |
w | (get)(HWND)アプリケーションの中身のウィンドウハンドル |
szmenu | (set)(STR)メニューの内容 |
szmenul | (set)(STR)(WindowsMobile)左メニューの内容 |
アプリケーションのメソッド:
open | アプリケーションのウィンドウを開く |
popup | アプリケーションのウィンドウを前面に出す |
ダイアログボックスユニット
ダイアログボックスを実現するユニットです。
HTEXT dlg = dlgnew("マイダイアログ");
vnewcmdbar(dlg.w);
HTEXT text = new();
add(text,"This is test");
vnew(text,dlg.w,WS_VISIBLE|WS_TABSTOP|TWS_LIST|WS_TABSTOP|WS_VSCROLL,WID1,0);
dlg.do();
ダイアログのプロパティ:
wa | (get)(HWND)ダイアログのトップレベルのウィンドウハンドル |
w | (get)(HWND)ダイアログの中身のウィンドウハンドル |
ダイアログのメソッド:
open | ダイアログのウィンドウを開く |
do | ダイアログを開き、OKかキャンセルされるまで処理を返さない |
loop | OKやキャンセル、その他のボタンが押されるまで処理を返さない |
MBXユニット
MBXユニットは、指定したフォルダのファイル一覧をテキスト形式で取得するユニットです。フォルダがMBXフォルダの場合は、メール一覧を取得します。
MBXユニットのテキストの内容に、ファイルやメールの一覧が入ります。一覧の内容は随時自動的に更新されます。メールの一覧はほぼリアルタイムで、ファイルの一覧はときどき更新されます。
テキストの1行に、1つのファイルや1つのメールの名前や差出人などの情報がタブで区切って入ります。作成したMBXユニットをビューで表示すると、ファイル一覧やメール一覧が画面に表示されます。
MBXの主なプロパティ:
parent | (getset)通知が必要な場合は親ウィンドウハンドルを指定します。 |
folder | (getset)1にするとフォルダツリーをロードします。 |
stat | (set)1にすると未読数などだけをロードします。 |
sort | (getset)ソート順を指定します。 |
thread | (set)1にすると一時的にスレッド順でソートします。 |
usrint | (set)1にすると間欠的な動作をします。 |
subdir | (getset)1にするとサブディレクトリ内のファイル一覧もロードします。 |
dir | (getset)1にするとサブディレクトリも一覧に表示します。 |
mbxdir | (getset)1にするとMBXフォルダの内容も通常フォルダとしてロードします。0にするとMBXフォルダの内容はメール一覧としてロードします。 |
cont | (getset)1にするとファイルの内容の先頭部分も一覧に表示します。 |
binary | (set)1にするとバイナリファイルも一覧にロードします。 |
pack | (set)1にすると、0をセットするまで一覧のロードやソートを止めます。 (get)パック中かどうかを返します。 |
break | (getset)1にすると動作を中止します。 |
lock | (set)1にすると、0をセットするまで一覧の内容を更新しないで保持します。 (get)ロック中かどうかを返します。 |
locate | (set)現在選択しているメールやフォルダを記憶します。 (get)記憶していた位置へジャンプします。 |
seling | (get)1の間はMBXの現在位置が変化する可能性があります。 |
mbx | (get)MBXフォルダをメール一覧として表示しているかどうかを返します。 |
size | (get)フォルダのサイズを返します。 |
clmjump | (set)メッセージIDの項目へジャンプします。 |
clmjumpfn | (set)ファイル名の項目へジャンプします。 |
clmfname | (set)指定したフォルダの内容をロードします。 (get)ロードしているフォルダ名を返します。 |
clmload | (set)指定したフォルダの内容をロードします。 |
clmmask | (getset)ファイルマスク(*.cなど)をセットします。 |
clmfilter | (get)フィルタを取得します。 |
clmfnamem | (get)ロードしているフォルダ名をマスク付きで返します。 |
textfilter | (set)フィルタを指定します。 (get)フィルタを取得します。 |
MBXの主なメソッド:
top | 先頭へジャンプします。 |
loadal | フォルダの内容を今すぐに全部ロードします。ロードし終わるまで処理を返しません。 |
reload | ロードした内容を破棄して、再ロードします。 |
delete | 現在位置のファイルやメールをごみ箱へ移動します。 |
remove | 現在位置のファイルやメールを削除します。 |
getflg | 現在位置のファイルやメールのフラグを取得します。 |
引数にテキストを取るメソッド:
fname | 現在位置のファイルのフルパス名をテキストにセットします。 |
gethdr | 現在位置のメールのヘッダをテキストにロードします。 |
getbdy | 現在位置のメールの本文をテキストにロードします。 |
getwhl | 現在位置のメールのヘッダと本文をテキストにロードします。 |
add | テキストのメールの内容をMBXフォルダに追加します。 |
addjmp | addと同じく追加して、追加したメールへジャンプします。 |
ext | 現在位置のメールの内容を1つのファイルに切り出して、テキストにロードします。 |
getmid | 現在位置のファイルやメールのメッセージIDを取得し、テキストのmidプロパティにセットします。 |
update | 現在位置のメールの内容を、テキストの内容に更新します。 |
その他のユニット
newunit APIを使って利用できるユニットには次があります。
ID_MBXFD | MBXユニットと組み合わせてファイル削除やコピーをおこないます。 |
ID_EMAILS | E-Mailアドレスリストの操作をおこないます。 |
ID_MAILSR | メールの送受信をおこないます。 |
ID_ADRBK | アドレス帳の操作をおこないます。 |
ID_ASAVE | 自動保存をおこないます。 |
ID_WEB | Webページの受信をおこないます。 |
ID_URL | URLアドレスの操作をおこないます。 |