とりあえず、現行の進行計画から,
α版:Version 0.2.x 現行の問題点から、直ぐにでも修正出来る項目を盛り込んだもの
α1版:Version 0.3.x クラス化+α
α2版:Version 0.4.x グラフィックウインドウ+α
β版:Version 0.5.x とりあえず、計画に有った全機能の取り込み
正式版: Version 1.0.0 β版のバグFIX版
α版1.01パッケージのダウンロード
ライブラリの版数は、0.2.9
α版を使ったサンプル(分割コンパイルの例)
- α版での対応項目及び既に実施済みのもの
- コンパイラの作成(前項参照)
- CwccPrint→CwccPrintf化(下記参照)
- YesNo(CwccYesNo)追加
- 入力ボックスの座標変更(ちょっと難あり)
- CwccCls(画面クリア)とクリアボタンを追加
- ファイルの後始末→アプリ終了時にfcloseall()を追加
- CwccGetchの実装(仮実装)
- ちょっと難しい項目
- CwccGetsを連続で使用すると終了出来ない
どの様な対策を講じても同様になってしまうので、プログラムの設計者の判断に委ねるものとする。
- CwccPrintの高速化
現行メールボックスバッファを使用しているので、コピーしてからスレッド修復等をすると、更に遅れる可能性有り。現状のままとする。
- 未対応項目
- フォントと色の指定
- エディットの更新タイミング(ドロップアウト処理)
- タイマの実装
- ファイルダイヤログの実装
- クラス化
- 可変引数の使用方法
あまり必要性が無かったので、ず〜〜〜っと昔に勉強したので、忘れていたのだ。例えばprintf()関数の様に、引数が幾つ有るか分からないユーザ関数を定義するには、どうしたら良いのだろうか?
これには、va_マクロとか、va_list等を使用するのだが、これを本格的に説明すると、一晩掛かるので、今回使用した、簡単な方法を説明する。今回の目的は、CwccPrint()関数を、可変引数にして、CwccPrintf()にする事だったので、可変引数部分を受け取って、目的通りに文字列に変換出来る方法が有れば良かった訳である。これを実現するには、まず、ユーザ関数側の、可変引数の部分を(...)とするのだが、第一引数は確実に存在しなければならないので、第二引数以降を可変とする。この方式さえ抑えておけば、v?printf() (例えば、vsprintf等)の関数を使って、va_listで可変引数を受け取る事が出来るのである。詳しくは、下記例を参照してほしい。尚、このva_listについては、windows.hにも宣言されているので、特別に、別のインクルードファイルを追加する必要は無い。
例)
#include <windows>
#include <stdio.h>
char buff[256] ;
void coolprintf(char *format,...)
{
va_list ap ;
va_start(ap,format) ;
vsprintf(buff,format,ap) ;
va_end(ap) ;
}
void main(void)
{
int i ;
for(i=0 ; i<100 ; i++){
coolprintf("test %d\n",i) ;
printf(buff) ;
}
}
|
|