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

    KAB-studio.h


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

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

// 「カブカテキョ」８月受講生募集中！

　「メールでプログラミングの家庭教師サービス」カブカテキョでは、
８月からの受講生を大募集！
　メールを使って、皆さんと一対一でプログラミングを教えます。
　皆さんの環境に合わせて教育方針を決めるので、仕事や大学で必要な
技術を身に着けたり、自分のペースで勉強できたりと自由度が高いです。
　「掲示板で訊いたら怒られた」「周りに訊く人がいない」
「鏑矢正伝に教わりたい」というあなた、是非お申し込みください！
（注：有料です。月々5,500円！）

[ カブカテキョ ]
http://www.kab-studio.biz/Katekyo/index.html


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

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

2005/07/25 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
13.01 アルゴリズム？
13.02 アルゴリズム関数の基本
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


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

2005/07/17 (Sun)
　午前中はアニメの感想書き。どれもいいけど、特にマイメロ。アニメを観
つつ明日の更新分を。日曜まったりモード。コミケ用のネタを用意しない
と。

2005/07/18 (Mon)
　今日は何したのかよく憶えてない。 JavaA2Z に修正マージソート。午後
はテキスト書きとカブカテキョ。月末に掛けて忙しく。カブカテキョのお休
みの日。そしてサンリオ再建中。

2005/07/19 (Tue)
　午前中はカブカテキョとテキスト。 Get2Cash!! から「小切手届いたよ」
メール。 JavaA2Z は NullPointerException にリンク張られること多し。
メロブでコミックス購入。帰ってからはぐったり。

2005/07/20 (Wed)
　昨日の夜中に腹の調子が悪くて眠れなかった。午前中はカブカテキョ。
午後はぐだーっと。 JavaA2Z のクリック数よもっと増えろー！　そして
２ちゃんねるチック。

2005/07/21 (Thu)
　午前中は死んどく。お昼にカブカテキョ、３時に JavaA2Z 、そのあとは
ぐだー。実家へ帰るのは延期に。他の仕事をどう入れていくか、かな。

2005/07/22 (Fri)
　午前中は区役所へ転出届を出しに。引っ越す……わけではなく、実家の
扶養家族にしてもらうために。お昼はカブカテキョとテキスト書き。
カブカテキョは負担に偏りが。歯医者はあと一回。 Codian を有効活用。
やること盛りだくさんなのに来週分のほとはー外伝３が……。今日は結構
充実。そしてシステム製作引き受ける？

2005/07/23 (Sat)
　午前中はカブカテキョとテキスト書き。午後は JavaA2Z やかぶヘッダー
や Codian に広告を入れようかとか。でも SEO 的に……。代わりに日記に
広告を。カブカテキョの修正。色々できたけど体調悪し。大きな地震が。


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

2005/07/17 (Sun)
http://d.hatena.ne.jp/kab_studio/20050717
起きたの。
[アニメ]ゾイドジェネシス 第15話「離散」
[アニメ]おねがいマイメロディ 第16話「キスできたらイイナ！」
[アニメ]魔法戦隊マジレンジャー 
　第21話「魔法特急で行こう〜ゴー・ゴー・ゴルディーロ〜」
[アニメ]交響詩篇エウレカセブン 第14話「メモリー・バンド」
[ほとはー]ほとはー外伝３ P.27
[Prog]ぷらとわ追加。
[JavaA2Z]単語追加。

2005/07/18 (Mon)
http://d.hatena.ne.jp/kab_studio/20050718
起きたとはいえ。
あー。
[JavaA2Z]単語追加。
[アニメ]ぱにぽにだっしゅ！ 第3話「病む身より見る目」
[Machician]第９話 君がそこにいるから (1) [△ ▽]

2005/07/19 (Tue)
http://d.hatena.ne.jp/kab_studio/20050719
でも起きる。
自動更新？
[アニメ]ガン×ソード 第3話「勇者は再び」
Google AdSense→Get2Cash!!
[JavaA2Z]単語追加。
タケコプター！！
[買]今日買ったコミックス。
[Machician]第９話 君がそこにいるから (2) [△ ▽]

2005/07/20 (Wed)
http://d.hatena.ne.jp/kab_studio/20050720
おはよう。
しまった。
sakusakuでウイイレ9
社員のインターネット私用で年間1780億ドルの損失
体調悪……。
[JavaA2Z]単語追加。
eラーニング
「Google Moon」で静かの海に降下する
[Machician]第９話 君がそこにいるから (3) [△ ▽]
[Machician設定]リングガン

2005/07/21 (Thu)
http://d.hatena.ne.jp/kab_studio/20050721
ねむいぜーっ！！
[アニメ]フルメタル・パニック!The Second Raid 第2話「水面下の状景」
[アニメ]極上生徒会 第16話「あなたに此処にいて欲しい」
[JavaA2Z]単語追加。
[買]テッサ来る。
[Machician]第９話 君がそこにいるから (4) [△ ▽]

2005/07/22 (Fri)
http://d.hatena.ne.jp/kab_studio/20050722
起きた。
[アニメ]SHUFFLE! 第3話「憶えてますか？」
[アニメ]ぺとぺとさん 第2話「特定家族」
[アニメ]苺ましまろ 第2話「アナ」
[辞職]転出届。
[病気治療]歯医者。
プロワーカーバンク独立日記を書いてギフト券欲しい！
はてなフォトライフ、バージョンアップ。
[JavaA2Z]単語追加。
[Machician]第９話 君がそこにいるから (5) [△]

2005/07/23 (Sat)
http://d.hatena.ne.jp/kab_studio/20050723
起きた。
[アニメ]ふしぎ星の☆ふたご姫 
　第17話「燃えろスポーツ！☆プリンセスパーティ」
[アニメ]絶対少年 第10話「雨の中に錯綜する想い」
[買]まんがタイムきららCarat
[買]今日本屋で買ってきたもの。
モザイクなし性描写の米映画８月公開
地震。
[JavaA2Z]単語追加。
エレベーターが止まってる。
[JavaA2Z]カブカテキョ広告追加。


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

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

　第４試合：朴雅樹vs結白舞。
「これが実質的な決勝戦ね……」
　舞は、拳を掌に打ち付けて、自らを奮い立たせる。
　昨日言った事は、本心。
　でも。
　全力は、出す！
　ホーンが鳴る。
　同時に。
　浮き上がるような音と共に、周囲の木が、一斉に燃える。
「……やるっ！」
　熱さのせいか、汗が噴き出す。
「でもね」
　舞は不敵に笑む。
「火は水で消せるし」
　両手を前で組み、
「分解すれば、酸素も作れて呼吸は確保、そして」
　上に上げ、
「水素の爆発で吹き消すこともできる！」
　振り降ろす！
　……。
　……何も、起こらない。
「……嘘……」
　そう、言うしかなかった。
　水蒸気が、ない。
　舞の周りに、水気が、なかった。
　あり得ない。
「……ここは私のテリトリーなのよ……そこに立ち入って、火で飛ばした…
…？」
　突然火が強くなり、トカゲの舌のように肌を舐める。
「ヒッ……」
　肌が、焦げる。
「……」
　私、死ぬ？
　う、ううん、そんなことないよね、雅樹だって手加減してくれるだろう
し、勝敗も決しただろうし……。
　だが、火は、止まない。
　上下左右、見回せば、自分は炎の檻に、囲われていた。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
　レーダーマップに、光点が現れる。
　瞬間、視界上に警戒線、1メートル上空に現れた装甲多脚が、音を立てて
着地する。
『アルファ01から04、3番弾に変更、エネミー01に攻撃開始、アルファ05及
びアルファ06は西側の索敵をカバー、それ以外は警戒続行』
　ワースの4人がリングガンを向ける。白色のアサルトライフルが音もなく
持ち上がる。

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

■追加・更新単語

ソケット
クライアント
サーバー
クライアントサーバーシステム
鯖
リプレース
バブルソート
アルゴリズム
クイックソート
マージソート
修正マージソート
絶対値
Math
明示的
暗黙的
型変換
キャスト演算子
冗長
寿命
assert
AssertionError
契約による設計
アサーション
javac
java
基本データ型
初心者
@deprecated
Javadoc
javadoc
ドキュメンテーションコメント
/**
@param
@return


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

　Version 15.17
一から DLL を作ってみる

「ここまで、関数とクラスを DLL の中で作って使ってみる、というのをし
てみました」
『うん、結局 __declspec(dllexport) 使えば簡単だったなーと』
「……本当に簡単？」
『え？』
「ここまで見てきたのって、 Version 15.09 ( No.309 ) で作った DLL で
試してきたけど」
『あー、そういえばあの時作った DLL って、 AppWizard がほとんど全部用
意してくれてたんだよね……もしかして？』
「そう、それを一から自分で作ってみましょう」
『やっぱり……』
「というわけで、まずは新しいプロジェクトから作ります」
『メニューの【新規作成】、【プロジェクト】のページで左は
【Win32 Dynamic-Link Library】、右のプロジェクト名は DLLTestHard 、
ね』
「 Hard ……まぁいいけど」
『心意気よ心意気。で、』

・空の DLL プロジェクト
・単純な DLL プロジェクト
・シンボルをエクスポートする DLL

『やっぱ一番上？』
「そ、一番上」
『やっぱり……ん、プロジェクトできたよ。見事に何もないけど』
「大丈夫大丈夫、ひとつひとつ作っていけばいいから。まず、 DLL になく
てはならないもの、それは？」
『なくてはならないもの？　なんかあったっけ』
「じゃあ普通のプログラムだと絶対にあるものは？」
『んー、 WinMain() はあるよね……あ！　DllMain() だ！』
「そういうこと。普段使わないからあんまり気にならないけど必要だから」
『使わないのに必要っていうのもね……』
「まずは DllMain() を作ります。メニューの【ファイル】-【新規作成】で
【ファイル】のページを表示して、左は【C++ ソース ファイル】、右の
【ファイル名】は DLLTestHard.cpp 」
『これってプロジェクト名じゃなきゃだめ？』
「そんなことないよ。 DLL も Exe も、基本的にソースファイル名や
ヘッダーファイル名に制限はないから。 MFC はプロジェクト名を元に
ファイル名を作ることが多いけど」
『じゃあ普通はどうするの？』
「いろんなプロジェクトで使う場合は Main.cpp とかのシンプルな名前の方
が多いかも。特にクラスがなくて関数ばかりの時とかは」
『そうなんだ』
「ま、プロジェクト名の方が分かりやすいけどね」
『じゃ、 DLLTestHard.cpp で。空のファイルできた』
「そこに DllMain() を作ります」

// DLLTestHard.cpp

#include <windows.h>

BOOL APIENTRY DllMain
    ( HANDLE hModule
    , DWORD  ul_reason_for_call
    , LPVOID lpReserved
    )
{
    return TRUE;
}

『……中見ないから本当に必要性なさそうだね……』
「ただ」
『ただ？』
「 DLLTestEasy の例を見てもらうと分かるんだけど、 DLL って、関数や
クラスだけじゃなくて、変数もエクスポートできるんです」
『あ、そういえばあったね』
「そういう場合、 DllMain() で初期化処理することになるから」
『なんで変数の使い方、説明しなかったの？』
「基本的には関数と同じ方法でエクスポートできるし、それに、 DLL の
変数って、完全なグローバル変数だから」
『 Version 6.16 ( No.116 ) で言ってたね、グローバル変数は作っちゃ
駄目だって』
「そう、ましてや DLL なんかに置いてあったら、いろんなアプリからアク
セスし放題だもの。管理なんて全然できないから」
『確かに……』
「だから基本的に、作らないし使わないってことで」
『だから DllMain() も使い道がない、と』
「そういうことになるね。さて、これで DLL を作るのに最低限必要なもの
ができたので、ビルドしてみて」
『ほい、成功した。 DLLTestHard.dll できたよ。なんにもエクスポートし
てないからライブラリファイルはないけど』
「ではエクスポートしましょう。まずは __declspec の切り替えシステムを
用意します」
『あ！　そっか、それ作らなきゃいけないんだ』
「というわけで、インポート・エクスポートのための切り替えシステムを作
ります。メニューの【ファイル】-【新規作成】で【ファイル】のページを
表示して、左は【C/C++ ヘッダー ファイル】、右の【ファイル名】は 
DLLTestHard.h 」
『空のファイルできた』
「そこにこう書き込んで」

// DLLTestHard.h

#ifdef DLLTESTHARD_EXPORTS
    #define DLLTESTHARD_API __declspec(dllexport)
#else
    #define DLLTESTHARD_API __declspec(dllimport)
#endif

『 DLLTESTHARD_EXPORTS が #define されていたら、DLLTESTHARD_API は 
__declspec(dllexport) に置き換わって、エクスポートされる。されていな
かったら、 DLLTESTHARD_API は __declspec(dllimport) に置き換わって
インポートされる、ね』
「そういうこと」
『この DLLTESTHARD_EXPORTS とか DLLTESTHARD_API とかも好きな名前で
いいの？』
「うん、プロジェクト名とかとは関係ないから。ただ、他の DLL とかと被
るとまずいかな」
『他と同じじゃダメってことね』
「それに、プロジェクト名を使った方が楽だよ」
『楽？』
「メニューの【プロジェクト】-【設定】ダイアログの、【C/C++】ページの
【一般】ページの、【プリプロセッサの定義】見てみて」
『ん……あーっ！！』

WIN32,_DEBUG,_WINDOWS,_MBCS,_USRDLL,DLLTESTHARD_EXPORTS

『 DLLTESTHARD_EXPORTS が、ある！！』
「そう、実は AppWizard が、この名前で追加してくれてるんです。ここで
書かれている文字列は」

#define DLLTESTHARD_EXPORTS

「と同じ意味だから」
『自動的にエクスポートされる……ちょっとビックリ……』
「だからプロジェクト名を元に付けた方が、ちょっとだけ楽になるかな。さ
て、これでエクスポートとインポートの準備ができました。さっそく
エクスポートする関数を作ってみましょう」
『はーい』
「さっきの DLLTestHard.cpp と同じ方法で、 Func.cpp ってファイルを
作って」
『あれ？　別ファイルにするの？』
「普通はその方がいいかな。 DLLTestHard.cpp と別にすることで、外から
呼ばれる関数ってことが分かりやすいし」
『なんかちょっと面倒だけど……ん、 Func.cpp 作ったよ』
「じゃ、こんなふうにして」

// Func.cpp

#include <windows.h>
#include "DLLTestHard.h"
#include "Func.h"

// エクスポートする関数。
DLLTESTHARD_API void Output( const char *p_pch )
{
    OutputDebugString( p_pch );
}

『文字列受け取って出力する関数ね』
「エクスポートするのから先頭に DLLTESTHARD_API を付けています。では
次に、同じように Func.h を作って」
『ほい』
「そうしたらこんな感じに」

// Func.h

DLLTESTHARD_API void Output( const char *p_pch );

『つか Func.cpp のをそのまま貼り付ける感じね』
「うん、それでいいよ。これでビルドして」
『ビルド！　うん、 DLLTestHard.dll も DLLTestHard.lib もできた』
「以上で、関数をエクスポートする DLL ができました」
『あ、結構簡単かも』
「要は」

・DllMain() を作る
・インポート・エクスポートの切り替えシステムを作る
・エクスポートする関数を作る

「それだけ」
『意外と簡単なんだ』
「それに、一度作っちゃえば基本的には使い回せるところ多いし、関数や
クラスの頭に DLLTESTHARD_API とか付けるだけだから」
『そう考えるとすごく簡単そうに聞こえるから不思議ね……』
「実際、難しいのは動的に関数を使う所だけ」
『そっか、装飾名とかエクスポートの方法が複雑だったのって、結局それだ
けだもんね』
「シンプルに使う分には、 DLL はそんなに難しくないってこと」
『確かに』
「というわけで、使用例は次回に」

/*
    Preview Next Story!
*/
『なんども作って、全体像が見えてくるとなんとかなるかも』
「そう、そういう【手で触った感触】が大事」
『またわけ分かんないことを』
「そ、そう？……」
『というわけで次回』
＜ Version 15.18 一から作った 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
*/
////////////////////////////////////////////////////////////////////

