////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2005 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2005/07/18(Mon) No.316
    配信数： 1908
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
// NEW!!
http://www.kab-studio.biz/index.html

2005/07/18 (Mon)
　ほとはー外伝３にP.27を追加！
[ 三人合体ホットハーブ 外伝３ 【ワタシ の キロク】 ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html

2005/07/18 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
12.12 構造体のファイル読み書き
12.13 バイナリーのまとめ
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


////////////////////////////////////////////////////////////////////
// ちょお普通な日記
http://www.kab-studio.biz/nikki2/index.html

2005/07/10 (Sun)
　午前中はアニメ観て感想書いて、午後はほとはー外伝３とかの更新。
洞窟物語にはまる。夕方はDVDのダビング。夜はテキスト書き。充実した
一日。

2005/07/11 (Mon)
　テキスト書きメイン。サンプルアプリケーションの案に苦労。これの負荷
が高いから他が手に付かない……。 JavaA2Z の「とは」。そしていらんわ。
そしてテキストを書く秘訣。

2005/07/12 (Tue)
　午前中はカブカテキョ。お昼以降はテキスト書き。他に JavaA2Z 。なか
なかヒット数増えない……。今日は調子良かった？

2005/07/13 (Wed)
　午前中はカブカテキョ。夜は洞窟物語。やっとこさ聖域クリア。知り合い
にブログを勧めるとしたらどれがいい？　ライブドアがなぁ……。

2005/07/14 (Thu)
　午前中はカブカテキョ。いろんなプログラムで頭が混乱する。午後は
テキスト書き。あと JavaA2Z 。サーブレット関係追加しようかなぁ。そし
て残りの７割。

2005/07/15 (Fri)
　体調最悪モード。午前中はカブカテキョ。午後はカレー。 Google AdSense
の換金を。ヒット数と収入。午後５時に歯医者。そして進捗状況。

2005/07/16 (Sat)
　昨日から今日に掛けて徹夜。テキスト書きとそのプログラム作り。午前中
はそのまま起きて洗濯と Google AdSense の小切手送付。カブカテキョや 
JavaA2Z を寝ながら。仮眠６回。そして JavaA2Z 会話。


////////////////////////////////////////////////////////////////////
// かぶろぐ。
http://d.hatena.ne.jp/kab_studio/

2005/07/10 (Sun)
http://d.hatena.ne.jp/kab_studio/20050710
起きた。
[アニメ]ゾイドジェネシス 第14話「脱出」
[アニメ]おねがいマイメロディ 第15話「もう一度歌えたらイイナ！」
[アニメ]魔法戦隊マジレンジャー 
　第20話「キスしてケロ〜ゴール・ゴル・ゴルディーロ〜」
[アニメ]交響詩篇エウレカセブン 第13話「ザ・ビギニング」
[アニメ]プレイボール 第1話「伝説のキャプテン」
[ほとはー]ほとはー外伝３ P.26
[Prog]ぷらとわ追加。

2005/07/11 (Mon)
http://d.hatena.ne.jp/kab_studio/20050711
起きた。
[アニメ]ぱにぽにだっしゅ！ 第2話「紅は園生に映えても隠れなし」
忙しい。
[JavaA2Z]単語追加。
[Machician]第８話 アイとコイと (21) [△ ▽]

2005/07/12 (Tue)
http://d.hatena.ne.jp/kab_studio/20050712
起きたのです。
[アニメ]奥さまは魔法少女 第2話「シチューはOKよ、ということ」
[アニメ]ガン×ソード 第2話「ファニーストリーム」
[アニメ]あかほり外道アワーらぶげ 第2回
[JavaA2Z]単語追加。
[Machician]第８話 アイとコイと (22) [△ ▽]

2005/07/13 (Wed)
http://d.hatena.ne.jp/kab_studio/20050713
起きた？
極上生徒会（ゲーム版）
[アニメ]かみちゅ！ 第3話「そんなつもりじゃなかったのに」
今、ブログはどこがいいんだろう。
洞窟物語クリア。
[アニメ]攻殻機動隊 S.A.C. 2nd GIG 第15話「そこにいること」
[Machician]第８話 アイとコイと (23) [△ ▽]

2005/07/14 (Thu)
http://d.hatena.ne.jp/kab_studio/20050714
起きましょう。
[アニメ]フルメタル・パニック!The Second Raid 第1話「終わる日々」
[アニメ]極上生徒会 第15話「私が此処にいる理由」
ゴロ寝 de スク
日テレ「火サス」視聴率低迷で今秋終了
[JavaA2Z]単語追加。
日本語で「Googleマップ」と「Googleローカル」
[Machician]第８話 アイとコイと (24) [△ ▽]

2005/07/15 (Fri)
http://d.hatena.ne.jp/kab_studio/20050715
起きた。
Google AdSense
[アニメ]SHUFFLE! 第2話「会いたくて」
[アニメ]ぺとぺとさん 第1話「おはよーさーん」
[アニメ]苺ましまろ 第1話「バースディ」
[食]カレー工房 CUILLERE（キュイエール）
はてなアイデアミーティング
[JavaA2Z]単語追加。
[病気治療]歯医者。
Google AdSenseの換金
[Machician]第８話 アイとコイと (25) [△]
[Machician]第８話あとがき

2005/07/16 (Sat)
http://d.hatena.ne.jp/kab_studio/20050716
……おはよう。
もう9時か。
[アニメ]ふしぎ星の☆ふたご姫 
　第16話「ミルキー大ピンチ☆エクリプスの正体」
[アニメ]絶対少年 第9話「いつだって優先順位の問題」
ひとだんらく。
小切手送る。
[JavaA2Z]単語追加。
寝て起きて寝て起きて。
「ネギま2時間目」ディレクター岡村氏に直撃インタビュー


////////////////////////////////////////////////////////////////////
// 風雅、舞い
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十二章　超越する存在　−２１−

　次の日。
　第３試合：リシュネvs少年。
　ホーンと同時に、二人のちょうど中間の位置が、弾ける。
　広範囲の衝撃波が衝突し、巨木が薙ぎ倒され、宙へと舞う。
「うわーっ」
　飛行場の管制室から観戦する舞が、感嘆を上げる。眼下に広がるジャング
ルから、間欠泉のように木々が舞い上がる。
「ってゆーか……」
「てゆーか？」
　立て続けに、森の至る所で炎のない爆発が起こる。それはピンポイント
で、かつ広範囲だった。
「あれ、俺ら対策だ」
「え？　私達？　なんで？」
「俺達は頑丈じゃないが索敵能力は高い、だから遠距離からのある程度狙っ
た攻撃は躱すことができる」
「でもああやって広範囲にある程度強力な攻撃をすれば、こちらは躱しよう
がないから、ってこと？」
「そうだろ。そうなんだが……」
　森の至る所が削れていく。
「……狙ってない？　乱れ撃ち？」
「いや、苦手なんだ、あいつら。ＡＰがそうなのか分からないが、ああいう
広範囲に衝撃波を出す業っていうのを今までしてなかったんだな。だから正
確に狙いを付けることができないんだ」
「必要ないって思ってたんじゃない？　あの速さだもの、接近して正確に強
力な一撃、普通それで勝てるし。あ」
　リシュネが森の上へと出てくる。視界が波立ち、リシュネへと衝撃波が飛
んでいることが判る。それをリシュネは、空を跳ねて躱す。
「あれ……」
　衝撃波が次第に細くなっていき、そして間が短くなる。
「あれも私達を想定して？」
「だろうな……」
　リシュネが止まり、両腕を上げ、呪文を唱えている。衝撃波がリシュネに
直撃し、体の形を変えていくが、気にせず唱え終えると、両腕を振り降ろ
す。
　リシュネの眼下、広大な森が、網目状にささくれ立つ。木々が跳ね上げら
れ、木の葉が霧のように空を埋め尽くし、轟音に楯突くように、ホーンが
鳴った。
「うわー、あれされたら躱せないなぁ、っていうか死んじゃうかも」
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
「調停委員会、って……」
　HAC・調停委員会。
　正義の味方とすら言われる、神のような存在。
　だが。
　目の前の存在は、とても正義の味方には見えなかった。

Machician 第９話 君がそこにいるから 連載開始！
[ Machician ]
http://d.hatena.ne.jp/kab_studio/20040823#1093276416
[ Machician＋設定 最新一覧 ]
http://d.hatena.ne.jp/kab_studio/searchdiary?word=*%5BMachician
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
// JavaA2Z
http://www.kab-studio.biz/Programing/JavaA2Z/index.html

■追加・更新単語

superメソッド
superフィールド
classフィールド
モデル
ビュー
コントローラー
ArithmeticException
ArrayStoreException
StringIndexOutOfBoundsException
OutOfMemoryError
ExceptionInInitializerError
static初期化子
ClassNotFoundException
IllegalArgumentException
FileNotFoundException
java.io
IO
DataOutputStream
DataInputStream
EOFException
EOF
IOException
FileInputStream
FileOutputStream
ファイル


////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 15.16
クラスをエクスポートする！

「前回は関数をエクスポートするときの方法と装飾名の関係について説明し
ました」
『 __declspec(dllexport) を使うとエクスポート名がへんてこになるけど
仕方ない、って話だったね』
「だから、プラグインみたいに〈関数名を指定する〉場合はモジュール定義
ファイルを使って、それ以外は __declspec(dllexport) を使う、というの
が基本かな」
『そうなっちゃうんだね。あの装飾名はなんかちょっとヤだけど……』
「さて、今回は関数ではなくクラスをエクスポートします」
『クラスを！？　なんか難しそう……』
「実はそんなに難しくないんです。まずは実際に使ってみましょう。 
DLLTestEasy プロジェクトの DLLTestEasy.cpp を次のように修正してくだ
さい」

// DLLTestEasy.cpp

#include "stdafx.h"
#include "DLLTestEasy.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}


// これはエクスポートされた変数の例です。
DLLTESTEASY_API int nDLLTestEasy=0;

// これはエクスポートされた関数の例です。
DLLTESTEASY_API int fnDLLTestEasy(void)
{
    OutputDebugString( "fnDLLTestEasy()\n" );
    return 42;
}

// これはエクスポートされたクラスのコンストラクタです。
// クラスの定義については DLLTestEasy.h を参照してください。
CDLLTestEasy::CDLLTestEasy()
{ 
    OutputDebugString( "CDLLTestEasy::CDLLTestEasy()\n" );
}

「修正箇所は、 CDLLTestEasy::CDLLTestEasy() の中に」

    OutputDebugString( "CDLLTestEasy::CDLLTestEasy()\n" );

「を追加したこと。あと、前回の fnDLLTestEasy() の前の DLLTESTEASY_API 
を元に戻したりしています。同じく」

// DLLTestEasy.h

// 以下の（略）
#ifdef DLLTESTEASY_EXPORTS
#define DLLTESTEASY_API __declspec(dllexport)
#else
#define DLLTESTEASY_API __declspec(dllimport)
#endif

// このクラスは DLLTestEasy.dll からエクスポートされます
class DLLTESTEASY_API CDLLTestEasy {
public:
    CDLLTestEasy(void);
    // TODO: この位置にメソッドを追加してください。
};

extern DLLTESTEASY_API int nDLLTestEasy;

DLLTESTEASY_API int fnDLLTestEasy(void);

「こちらは fnDLLTestEasy() の前に DLLTESTEASY_API を点け直しただけ。
ようするに、前々回の状態に戻しておいてもらえればOK」
『定義ファイル使わないようにってことね』
「あ、でも、別に今回は fnDLLTestEasy() は使わないから、前回のままで
もいいんだけどね。コンパイルエラーさえ出なければ大丈夫」
『組み合わせて使ってもいいんだ』
「気になる人は、モジュール定義ファイルを無効にしておいてください。
【FileView】の【DLLTestEasy.def】で右クリックして【設定】を選んで、
右側の【一般】ページの【このファイルをビルドしない】にチェックを
入れればエクスポートに使われないから」
『あれ？　これって前に見たような……』
「 Version 15.02 ( No.302 ) でやったね」
『そか、ソースファイルをコンパイルしない方法だ』
「モジュール定義ファイルはソースファイルじゃないけど、同じように無効
化できるっていうこと」
『ふーん』
「さて、 DLL 側はこれで準備ができました」
『え、もう！？　だってエクスポートの指定とかしてなくない？』
「してあるんです。 fnDLLTestEasy() の時もそうだったけど、 AppWizard 
が CDLLTestEasy のエクスポート例をすでに作ってくれてるんです。まず」

// DLLTestEasy.h

// このクラスは DLLTestEasy.dll からエクスポートされます
class DLLTESTEASY_API CDLLTestEasy {
public:
    CDLLTestEasy(void);
    // TODO: この位置にメソッドを追加してください。
};

『あ！　DLLTESTEASY_API って  __declspec(dllexport) に置き換える
マクロだ！』
「そう、クラスのエクスポートをする時にも __declspec(dllexport) を使
うんです。クラスの場合、 class の直後に置けばOK」
『関数と似てる……』
「でも、メンバ関数には付けなくていいんです」
『本当だ。メンバ関数ひとつひとつに付けてない』
「これは、メンバ関数の定義の方も同じ」

// DLLTestEasy.cpp

// これはエクスポートされたクラスのコンストラクタです。
// クラスの定義については DLLTestEasy.h を参照してください。
CDLLTestEasy::CDLLTestEasy()
{ 
    OutputDebugString( "CDLLTestEasy::CDLLTestEasy()\n" );
}

『ホントだ、メンバ関数の方についてない……これってすごく楽じゃな
い？』
「楽だよ。クラスのエクスポートは関数に比べて簡単なんです」
『へー』
「では、実際にこのクラスを使ってみます。ビルドして DLLTestEasy.dll 
ができたら BuildTest\Debug フォルダにコピーして」
『ほい』
「 BuildTest プロジェクトの方で、 Version 15.09 ( No.309 ) と 
Version 15.10 ( No.310 ) で fnDLLTestEasy() を使ったときと同じように
ヘッダーファイルとライブラリファイルを参照するようにして」
『前からなってなくない？』
「色々とごちゃごちゃ設定変えてるからね。それができたら Main.cpp をこ
う書き換えてください」

// Main.cpp
#include <Windows.h>

#include "DLLTestEasy.h"

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    CDLLTestEasy cDLLTestEasy;

    return 0;
}

『お、 CDLLTestEasy クラス使ってる！　あれ、でもメンバ関数呼び出して
ないよ』
「うん、今回の例のこのメンバ関数」

// DLLTestEasy.cpp

// これはエクスポートされたクラスのコンストラクタです。
// クラスの定義については DLLTestEasy.h を参照してください。
CDLLTestEasy::CDLLTestEasy()
{ 
    OutputDebugString( "CDLLTestEasy::CDLLTestEasy()\n" );
}

「コンストラクタだから」
『あ、よく見たら……だから作るだけで呼び出されるわけね』
「そういうこと。では試してみて」
『ほい。ビルドして実行……お、〈CDLLTestEasy::CDLLTestEasy()〉って出
た！』
「こんな感じに、関数と同じようにクラスも使えるわけです」
『それも、 class の後ろに DLLTESTEASY_API を付ければいいだけ……あ、
質問！』
「はい火美ちゃん」
『エクスポートすると、やっぱり変な装飾名になっちゃうの？』
「なります」
『モジュール定義ファイル使えばならない？』
「ううん、クラスのメンバ関数は複雑だから、モジュール定義ファイルは使
えないんです」
『げ！　それってもしかして、プラグインみたいにできないってこと！？』
「そういうこと。そもそも、メンバ関数単独では呼び出せないでしょ」
『そっか、クラス作って、その変数通して呼ばなきゃいけないから……』
「一応、クラスでもプラグインみたいに使うことができるんだけど、すごく
難しいからそれはずっと先に」
『はーい』

/*
    Preview Next Story!
*/
『これで関数もクラスもやったね』
「難しかった？　簡単？」
『んー、ひとつひとつは簡単だったけど、全体だと……』
「というわけで全部振り返ってみましょう」
『げ』
「というわけで次回」
＜ Version 15.17 一から DLL を作ってみる ＞
『につづく！』
「一から作ってみると思いの外難しいんだよね」
『それをしろと……』


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/index.html
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2005 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

