鏑矢の憂鬱2000年10月後半
透明1ドットイメージ
 
2000/10/16 (Mon)
・今日はお便りがいっぱいあるよん。ではまずひとつめのお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 関数へのポインターの配列を作ろうと思って、試行錯誤した結果、次のようにするとうまくいくことが分かりましたが、何でこうやるとうまくいくのかその仕組みが分かりません、どうかおしえてくださ〜〜い。 このことを考えると夜も眠れません・・・
 
class sample {
public:
  int i;
  int j;
  int func0(){return 5;};
  int func1(){return 6;};
};

main(){
  int (sample::*dat_ptr[2])() = {&sample::func0, &sample::func1};
  sample sm;

  cout << (sm.*dat_ptr[0])() << (sm.*dat_ptr[1])();
}
	
透明1ドットイメージ
透明1ドットイメージ
 
・これはメンバ関数ポインタですね。うんうん、メンバ関数ポインタって難しいよねー。この例だとちょっと複雑なんで、要らない部分を削ぎ落としてそれを読み解いてみましょう。
 
class sample2
{
public:
    int func()
    {
        return 5;
    };
};

void Test2()
{
    int (sample2::*mem_ptr)() = &sample2::func;
    sample2 cSample;

    printf( "%d\n", (cSample.*mem_ptr)() );
}
	
・まず mem_ptr 。これがメンバ関数ポインタ、つまりメンバ関数のアドレスを格納する変数です。 int (sample2::*mem_ptr)() は、このメンバ関数ポインタが「 sample2 クラスのメンバ関数のうち、戻り値が int で引数なしのメンバ関数のポインタのみ格納できる」ことを示してます。だから同じ戻り値&引数でも他のクラスだと格納できません。逆に言えばこれに合うメンバ関数ならどれも入ります。最初の例で func0 も func1() も入れられるのはこのおかげ。これの書き方は「 戻り値 (属するクラス::*変数名)( 引数 ) 」です。ちょっと複雑やね。
 
・このメンバ関数ポインタにアドレスを格納するメンバ関数の指定が &sample2::func です。メンバ関数指定から () を取って & 付けただけ。見ての通り、特定のクラス型変数(つまり sm とか cSample とか)に関係ないのが特徴。で、最後に (cSample.*mem_ptr)() でメンバ関数を呼び出します。 mem_ptr がメンバ関数ポインタ、 cSample が先ほど言ったクラス型変数。この時点で初めて、特定のクラス型変数と、そのクラスが持つメンバ関数とが結びついて呼び出されます。
 
・メンバ関数ポインタの特徴は、自由度が高いこと。最初の例みたいにメンバ関数ポインタを配列として入れることで、同じ引数・戻り値のメンバ関数を次々と呼び出すことができます。メンバ関数の「名前」を使わなくていいからね。最初の例だと dat_ptr[] を for ループで呼びまくるとかすれば、わざわざ func0() とか func1() とかって指定せずに呼べるわけですね。
 
・次のお便りっ!
 
透明1ドットイメージ
透明1ドットイメージ
 ActiveX テクノロジーについて学びたいのですが、何か参考になる本、ホームページなどないでしょうか。ちなみに私は、プログラミングはそこそこ分かるのですが(http://www.mambo.kuhp.kyoto-u.ac.jp/~miyoshi に作ったソフトがあります。)、このテクノロジーについてはまったく初歩です。
透明1ドットイメージ
透明1ドットイメージ
 
・その続き。
 
透明1ドットイメージ
透明1ドットイメージ
 すみません。先ほど質問を送ったものなんですが、質問の書き方が不十分だったので付け加えさせてください。
 ActiveX テクノロジーをVisual C++ から利用する方法を知りたいと思っています。このテクノロジーの大まかな形は知っているのですが、使い方となるとまったくわかりません。それで、何かいい資料があったら教えてください。
透明1ドットイメージ
透明1ドットイメージ
 
・どうだろう、わても ActiveX にはあまり詳しくないのと、 ActiveX ってゆーと実はかなり広い範囲をカバーするんでその辺が難しいかな。たとえばホームページに貼り付けるプラグインもどきも ActiveX だし。凝ったダイアログコントロールとかは ActiveX コントロール。あとシェルエクステンション関係も ActiveX って含められるかもしんない。
 
・手元にある本でこの手のことが書いてあるのが Visual C++ 5 パワフルテクニック大全集くらいなんだけど、これにはその ActiveX コントロールの作り方と、プロパティページの追加方法とかが書いてあったりします。でもかなり上級向けかも(汗)。ダイアログに貼り付けて使えるって点で、 ActiveX コントロールを作ってみるのが一番楽しいかもしんない。そういう本って出てそうだし。 ActiveX コントロールは、それを作って VB とかに貼り付けられるから需要高いはず。
 
・最後のお便り!
 
透明1ドットイメージ
透明1ドットイメージ
 下記の件ですが解決しましたので連絡します。 ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_DRAWFRAME);
 で再描画してくれます、ヘルプにしっかり書いてありました。。。
> 結局、フレームウインドウに子供ウインドウを乗せて作りました。
> やっぱり、前だれかが質問された様にフレームウインドウのスタイル
> にWS_EX_CLIENTEDGEが付いていました。
> defaultでつくみたい?
>
> ・・・で、全体の再描画の方法は?って問題になりますね〜。
> (とりあえず、立ち上がりに最小化して元に戻してます)
透明1ドットイメージ
透明1ドットイメージ
 
・これは10月5日のですね。 ModifyStyleEx() の第3引数……しまった、何もしない SetWindowPos() を試してなかった(爆)。フツー「1ドット縮小」の前にこれ試すよなー。むぅごめんです。まー解決してよかったです。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/17 (Tue)
・今日はお休み〜。日記の方にワールドPCエキスポのレビューあるよん。
透明1ドットイメージ
 
2000/10/18 (Wed)
・今日発売のCマガに BCB5.5.1 が付いてました。わては STL & iostream 入門を書いてる関係で VC 以外のコンパイラでもテストする必要が多いんだけど、それにこれまでは gcc for WIN32 ( Cygwin ) を使ってました。んでも、こういうふうに BCB が付いてくると、 BCB の方が何かと便利なこと多いです。ダウンロードの必要がなかったりとか、情報が多かったりとか。日本語ヘルプファイルが付いてるし。
 
にもちょっと書いたけど、コマンドラインコンパイラを VC から便利に使う方法、 BCB 編。メニューの【ツール】−【カスタマイズ】ダイアログの【ツール】ページで C:\Borland\bcc55\Bin\bcb.exe か make.exe を呼び出すようにすればOK。引数の方で $(FileDir)\Main.cpp とかして、常に作成するソースファイル名を同じにするとかすると楽。で、このツールをツールバーに登録すれば、ボタンひとつではいコンパイル。
 
・あ、あと[アウトプットウィンドウを使用]をオンにすると便利。コンパイルの結果がアウトプットウィンドウに表示されるからね。で、これと同じ方法で、コンパイル後の実行ファイルを呼び出すようにするとコンソール使わずに出力できるからこれも便利。難点は標準入力が使えないことですな(汗)。なにはともあれ、 VC6 以外のコンパイラを使うと色々発見が多いんでお奨め〜。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/19 (Thu)
・ STL & iostream 入門をCodian化してたらミスが見つかりました(汗)。 #06 の iostream で「 seekp( 0, std::ios::cur ) としても、ひとつ前に進んでしまいます」進まねぇ(爆)。何言ってるんだわては、ひとつ進んでるのは直前に文字を書き込んでるからだろーが。あーバカやってるなー。ホームページだとこういうの出してからでも訂正できるけど、まぐまぐのバックナンバーには永久にミスが残ってしまう(泣)。
 
・で、この関係でサンプルコード作り直してたらさらに問題が(汗)。 std::strstream で seekp( 0, std::ios::end ) すると、最大サイズの最後に来るもの( VC6 )と終端文字のところに来るもの( bcc & gcc )がありました。さらにさらに、 std::streampos が VC6 と bcc じゃクラスなのに gcc だと long 型。
 
・ちなみに iostream ベンダは、 VC6 は謎( MS ? Plauger さん?)、 bcc は Rogue 、 gcc は Free Software Foundation 。なんかよく分かんないなー。 STL ベンダは、VC6 は Hewlett-Packard 、 bcc は Rogue 、 gcc は SGI 。つっても Rogue と SGI のは HP 版を元に作られてるから基本は同じ。 iostream もそんな感じになってればいいんだけど、完全テンプレートライブラリじゃないから隠蔽部があってそれがこーなっちゃうんだろうなー。
 
透明1ドットイメージ
透明1ドットイメージ
 また聞きたいことがあります(^^ゞ
 VCの画面のアウトプット画面とワークスペース画面の場所とか自分で決めれるウインドウはどうやって作るのでしょう?
#なにかのウインドウにグリップバー?とサイズダイナミック?のスタイルで、その上にTreeViewやらListViewを乗せてる???
 なにかのウインドウ ← ツールバーかフォームビューかな?って思ってますけどどうなんでしょう? CSplitterWndとか使わないといけないんでしょうか?
 以上よろしくお願いします。
透明1ドットイメージ
透明1ドットイメージ
 
・どうなんだろう、あれはたぶん自分で作るしかないんじゃないかなー。似てるのはリバーコントロールとかなんだけど、それであんな感じに実装できるかは不明。分割ウィンドウにはあそこまで自由度あるのかなぁ。一応、困ったときの Codeguru も見てみて。なんか似た感じのがあるかも。そいや Codeguru の日本語版探したんだけどみつかんなかったなー、どこいったんだろ。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/20 (Fri)
・先日日記の方で「わての知識量は goo と同じ」(最近は「 Google と同じ」かも)とか書いたんだけど、最近ホントそう思うことしきりです。ってゆーのも、今日は就職前研修で情報処理2種レベルの勉強をしてて EDPS ってのが出てきて「なんぞや?」ってことになって。んで検索してみると EDPS についての「生の話」ってゆーか、教科書的でない情報がいっぱい出てくれるんです。こういう情報はすんなりと頭に入るんです、今のいろんな話とかと関連づけられてるから。世の中ホント便利になったもんだ。
 
・あと今日はプログラミング辞書書いてました。今回も結構粒ぞろいでいい感じです。今ぐらいの単語数がちょうどいいかな。だったら goo に登録しない方がいいかなー、登録すると一見さんが大量に増えるからか一気にどどんと単語数が増えるんだよねー。なんか全文検索って邪魔?<さっきと言ってることが違う!
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/21 (Sat)
・今日はぷらとわ書いてました。今回は API を使ってファイルを開いて書き込むってゆーのなんだけど、これがまた大変だった(汗)。1行ずつ読み込むのとかないから、結局まず全部読み込んでそれを std::strstream で切り取りって形にしちゃいました。結局 iostream のお世話になることに。
 
・まープログラムはできたんで、あとはその解説を書いていけばいいかな。あと数回はファイル読み書き。そのあとはダイアログコントロールの解説をしていくつもり。コントロールがウィンドウだってことや各コントロールへのアクセス方法、 DDX の仕組みとかについて。あとはレジストリとかかな。そこまで終わるのがいつになるやら(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/22 (Sun)
・今日は就職前研修をしてました。どんなのかは10月14日の日記を見てねん。今日したのは UNISYS の方。「プログラミングの基礎」ってゆーCD−ROMで、テキストと図をブラウジングして章末問題を解くっていう形式。「プログラミングの基礎」の内容はっていうと、たとえば「最初に設計をしてから作るんだよ」とか「フローチャートを作るんだよ」とか「配列はこう使うんだよ」とか「ファイルはこう読み込むんだよ」とか、そーゆーの。
 
・基本的には言語非依存、だから細かいコーディング手法はなし、概念解説が中心。でもやっぱ解説に言語の特定は必要、ってことでサンプル言語は VB でした。だもんで「イベントドリブンで、各イベントのプロシージャでフローチャートを書く」みたいな感じ。あとは if と while の図とか。確かに解りやすいんだけど、プログラム組みながらじゃないとこれ勉強するのはきついんじゃないかなー。
 
・当たり前だけどこれは楽勝で終わらせました。CD−ROMはあと2枚。それより情報処理2種レベルの方が大変だなー。最新のものだけじゃなくて古いのも知ってないといけないから。でもこれもわての方がアドバンテージあるんだもんなー、今の人ってドットインパクトプリンタなんて見たことない人多そうだし。ま、会社入ったらすぐ追い付かれるだろうから、今の記憶リソースを活用しつつ、どんどん先のこと勉強していきましょ。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/23 (Mon)
・今日はお便り紹介〜。
 
透明1ドットイメージ
透明1ドットイメージ
 Active X テクノロジーについての本、一応見つかりました。1つは、Inside OLE という本で、API を使って解説してあるので、難しすぎて実際の役には立ちそうにないのですが、概念を理解するのにはよさそうです。もう1つは、C MAGAZINE の11 月号で、こちらは解説が易しいのでかなり役立ちそうです。Visual C++ 5 パワフルテクニック大全集は、残念ながら書店で見つけることができませんでした。(いずれにせよ、情報ありがとうございました。)
透明1ドットイメージ
透明1ドットイメージ
 
・Cマガ11月号はかなり解りやすそうですね。ここに書いてあるように、本来 COM は「クラスプラグイン」の実装方法のひとつで、仮想関数を関数ポインタの代わりに使うってことが分かればだいたいイメージできると思うです。ただ、それでも使いこなすのは難しいかもしんない(汗)。
 
・ウィンドウズに最初から入ってるもの…… IShellLink とかのシェルエクステンション系インターフェイスなんかは、使うこと自体が難しいかも(汗)。使い方複雑だしドキュメント英語だし。でもそのへんをクリアすればなんとかなるかも。あとは、 COM を直接使わないで、 COM と同じ仕組みとしてプラグインのシステムを作ってみるとか。そういう練習するといいかもしんない。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/24 (Tue)
・今日はお休み〜。
透明1ドットイメージ
 
2000/10/25 (Wed)
・今日はお便りを紹介。ではまずひとつめのお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 UNICODE でのファイル入出力についてなのですが、MicroSoft の指定したように、_UNICODE をプリプロセッサにディファインするように指示し、エントリポイントもきちんと書き換えてから、次のようにしました。
 
    CStdioFile fin;
    CString StyleFile ="default.sty";
    CString Buffer;
    fin.Open(StyleFile, CFile::modeRead);
    fin.ReadString(Buffer);
	
 
 ところが、上のようにしてUNICODE で保存されたファイルから読み込もうとしたところ、きちんと文字列を読み込まず、でたらめな文字列が読み込まれます。
 ANSI で保存しなおしたファイルだと、英数字は読み込むのですが、いわゆる2バイト文字はきちんと読み込みません。ワープロを作っているので、どうしてもUNICODE を使いたいと思っています。どうか解決法をよろしくお願いします。
 読み込んだ文字列は、次のようになっています。(フォントの設定用)
大見出し 24 0 0 0 400 0 0 0 1 0 0 2 0 MS明朝 0 0 0 0 0
透明1ドットイメージ
透明1ドットイメージ
 
・どうもですー。えーっと、まず "default.sty" は _T( "default.sty" ) ってした方がいいかな。そうしないとこの文字列が UNICODE にならないから。でもファイルは開けているみたいですね。次に、 OS はなんでしょーかっていう問題。 Win95 は API が実際には UNICODE に対応してなかったんじゃないかなぁ。 Win98 は不明。 WinNT / 2K は大丈夫なはず。「対応してない」っていうのは、関数そのものはあるんだけど、中身が UNICODE 用の実装になってないってゆーこと。
 
・あとは表示方法かな、「でたらめ」の確認方法がどうかっていうのがあって、たとえば TRACE() で確認するときには %S でないとダメとかあるし。その辺を確認するためにも、まず UNICODE で書かれたファイルをバイナリー表示して、上のように読み込んで Buffer の中身と見比べてみて「同じ」なら読み込んだときに問題はない、ってことがわかるだろうから。そーやってこつこつ調べてかないと難しいかもしんない。実際、わても UNICODE に関しては複雑そうでちょっと分かんないとこ多い……。
 
・もひとつお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 MFCはむずいっす。
 例えばSDKの場合、送信側は
 
#defeine CM_RECEIVE_MESSAGE ( 0 )
『PostMessage( hWnd, WM_COMMAND, CM_RECEIVE_MESSAGE,
(LPARAM)g_RequestBufferMessage );』
 
ってやって受信の場合は
 
『case CM_RECEIVE_MESSAGE:』
 
に飛んできますよね? MFCの場合どうやるんでしょう? この場合やっぱり
 
『BEGIN_MESSAGE_MAP』
 

 
『ON_COMMAND(CM_RECEIVE_MESSAGE,OnReceiveMessage)』
 
を書いたりしたりするんでしょうか?
 でもって、CM_RECEIVE_MESSAGEはWM_USER + 4みたいにする?あってます? こんなに面倒なのでしょうか?
 
 あと、SDK側(*.c)からMFCで作成したウインドウに自前のメッセージを送る場合の話なんですが、
 
static UCHAR g_RequestBufferMessage[512];
PostMessage( hWnd, WM_COMMAND, CM_RECEIVE_MESSAGE,
(LPARAM)g_RequestBufferMessage);
	
 
 ってやった場合MFC側で落ちるようなんですが、なぜでしょうか?.cと.cppの名前なんとかの違い??? アドレスを渡してるだけなのに、名前なんとかに関係するのでしょうか?
 前回のVCのウインドウですが、他のアプリで同じものを使っていたのでSPY++見たらControlBarでした。(VCはわかりません)
透明1ドットイメージ
透明1ドットイメージ
 
・ホントだ! ControlBar っていうコントロールがあるみたいですね、これを使えばドッキングウィンドウとかできるのかもしんない。でも MSDN に情報皆無(汗)。ネットで探すしかないかも。ユーザー定義メッセージの処理、わてはたいがい CWnd::WindowProc() をオーバーライドしてそのなかで if 使って処理してます。 CWnd::WindowProc() が MFC でのウィンドウプロシージャ代わりってことですな。
 
・オーバーライドは MFC ClassWizard ダイアログの「メッセージ」の欄に WindowProc があるからこれを選んで「関数の追加」すればOK。あ、 WM_COMMAND ってことは、 CWnd::OnCmdMsg() でも処理できるかも……。 CM_RECEIVE_MESSAGE の値は、そう、 WM_USER を元に決めます。でも使っていい値が決まってたりするんでその辺がめんどいかな。詳しくは WM_USER のリファレンスを参照。
 
・ SDK から MFC への送信って、 SDK のと MFC のは別々のアプリですよね。そしたらこれはできないです。 g_RequestBufferMessage は SDK のプロセス内にあるから、 MFC のプロセスからはアクセスできないんで。文字列を送信する方法は面倒なんだよなー、確かシステムに登録してから渡すんだったような……。う”、やりかたすぐ出ないや。……1文字ずつ送るのはやばいか(汗)。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/26 (Thu)
・今日もお便り紹介〜。
 
透明1ドットイメージ
透明1ドットイメージ
 UNICODE の件、解決しました。アドバイスのとおり、バイナリエディタでデータソースをいじりながらいろいろ試した結果、UNICODE ファイルに文単位でアクセスする場合、
 
1.UNICODE のデータにはCArchive クラスでアクセスする。(CArchive.ReadString() を用いる。)
2.データは各文を0x0a0x00 で区切る。
 
 とすると、きちんとできました。一度はあきらめかけたのですが、どうやら作りつづけられそうです。アドバイス、ありがとうございました。
透明1ドットイメージ
透明1ドットイメージ
 
・おお、うまくいったみたいですね。 CArchive::ReadString() って1文字ずつ読み込んで処理するみたいです。そこに 0x0a0x00 ( \n\0 かな?)継ぎ足して処理ってことですね。なんか、結局 MFC の複雑さが問題だった気がしないでもない(汗)。こうなったってことは、結局 UNICODE まわりの処理は API の方でされてるってことなのかなー。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/27 (Fri)
・今日はお休み〜。
透明1ドットイメージ
 
2000/10/28 (Sat)
・今日はずーっと辞書書いてました。昨日から引き続きかも。今回は結構単語数多くてちょっと大変。でもなんとか終わったんで大丈夫そうです。そいや、辞書に WTL というものが送られてきた。どうやら Windows Template Library なるものらしい。あとで Platform SDK からダウンロードしてこよう、ふふふ……。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/29 (Sun)
・ちょっとお知らせ。今日の更新で、 Codian に iostream の #05 と #06 を載せます。で、その #06 の方、メルマガとして配信した方にミスがあったんで、その辺を直して掲載しています。ちなみに再放送の方も直しておきますんで。出しっぱなしのメルマガとずっと残って更新できるホームページ、メディア結構ちがうのね。
 
・今日のお便り!
 
透明1ドットイメージ
透明1ドットイメージ
 CListBoxクラスの場合、複数選択を可能にするとマウスのドラッグで複数の項目を選択できますが、CListCtrlクラスのレポート形式の場合、キーボードやCtrl+クリックでは選択できますが、ドラッグでは選択できません。
 
 CListCtrlクラスで同じ動作を実装するにはどうすればよいでしょうか。
透明1ドットイメージ
透明1ドットイメージ
 
・うーん、わての方でも試してみたんだけど、ちゃんとドラッグで選択できたです。一応リストコントロールは、エクスプローラー的な使い方はデフォルトでできるようになってるはずなんで、もしかしたらなんか設定がどっか変わったりしてるのかも。あとは他の何かが邪魔してるか。こういう時は最初から作ってまずリストコントロールまわりを組んでみて、それでなるかどうかチェックすると結構早道かなと思うです。
 
・でわまたっ!
透明1ドットイメージ
 
2000/10/30 (Mon)
・ WTL 解析したいのにその暇がないわ(泣)な鏑矢です。では今日のお便り。
 
透明1ドットイメージ
透明1ドットイメージ
 はじめまして。
 VC++で実験値測定用プログラムを作っているのですが、測定用機器へコマンドを送る方法がわかりません。
 シリアルポートから測定器に繋げています。
 CreateFileでポートを開くことはできるのですが、そこからコマンドを送る方法を教えていただけないでしょうか?
 ちなみに、ハイパーターミナルを使えば測定機器へコマンドを送ることはできました。
 よろしくお願いします。
透明1ドットイメージ
透明1ドットイメージ
 
・おお、ファイルと同じように COM ポートにアクセスできるとは、知らなかった(爆)。わてって通信とかホントに知らんなぁ……。えーっと、手元にある Win32 システムサービスプログラミングによると、 CreateFile() したあと GetCommState() と SetCommState() を呼んでポートの設定をして、 SetCommTimeouts() と EscapeCommFunction() を呼んで、それから ReadFile() や WriteFile() でアクセスするみたいです。
 
・なぜかこの本に載ってるサンプルコードと非常に似たコード(汗)があったんでそちらも紹介しておきます。っつーか Codian とか STL & iostream 入門とかどっかでコピられたりしてるんだろーか。いやまーされてないってのも悔しいが(爆)。っと、あとは Google で上記の API で検索すればサンプルコードはいっぱい出てくるし、 MSDN にもあるみたいだからそれ使ってもいいかな。
 
・でわまた。
透明1ドットイメージ
 
2000/10/31 (Tue)
・今日はぷらとわと辞書書きました。これまでは使いたくない API の使い方とか書いててちょっと辛かったけど、これからはソースコードへのダイブをするんで結構楽しい(爆)。辞書は相変わらず、結構書き忘れてるとこが送られてきてやっぱ助かるなーと。再確認して改めて気付くこともあるしね。
 
・いつも迷うんで Platform SDK からダウンロードする方法をメモっときます。米マイクロソフトダウンロードで Platform SDK 選んでもいっちょ選んで最初のリンクを飛んで Platform SDK Dawnload の Step2 でインストーラーをアップデートしてから Step3 の Download the Platform SDK Setup (x86) now. でセットアップ用アプリをダウンロード。んでこれを実行してツリー表示の中から Sourcecode/WTL を選んで次を選んで……なんかダウンロードサイズ大きいし途中で中止しちゃったし(汗)。でも WTL 自体は落とせたんでOK。しかし使う暇がない(泣)。
 
・でわまたっ!
 
 
(C)KAB-studio 2000 ALL RIGHTS RESERVED.