Last Update 2003/10/27

Windowsプログラミングstart
C言語による16ビット/32ビットアプリケーションの作り方

相馬 俊治 著
B5判 140ページ
定価1,581円(税込)
JAN9784789833813
1997年2月1日発行
[絶版2000.4.20] Windowsプログラミングstart
大変恐縮ですが,こちらの商品は品切れ絶版となりました.

 「あなたの書いたプログラムは満足いく出来栄えですか?」という問いに,「はい」と答えられたらすばらしいと思います.しかし,ここ数年のプログラミング環境の変化は目まぐるしく,それに追従するのさえ容易ではありません.実際,Windows3.1が登場して以来,事象駆動型プログラミング,グラフィカル・ユーザ・インターフェース(GUI),オブジェクト指向プログラミング(OOP)など,挙げだしたらきりがないほどです.そして今度は,Windows95による,32ビットのプリエンプティブなマルチタスクの登場.プログラマは,仕事と勉強で,休む暇がないのが事実です.

 ソフトウェアの分野だけでなく,ハードウェアの方の目まぐるしく変化しています.ほんの数年前,「インテル80286,1MBメモリ,40MBハードディスク」ですごいと思っていたら,今は「ペンティアム,16Mbメモリ,1Gbハードディスク」でも遅いのですから…. こんな状況の中で,プログラミングの質が下がってきていないでしょうか?

 最近のプログラムは肥大し動きが鈍くなる傾向があります(ハードウェアの進化がそれを補ってはいるが…).また,コードの再利用性を高めるはずのOOPが,その真価を発揮していません.その原因の一つは,技術の急激な進化と,それにともなう開発環境の変化にあるように思われます.最近の著名なC++コンパイラは,統合開発環境を用意し,プログラミングを簡略化するためのツールと汎用ライブラリを備え,技術的な詳細を知らなくても,これを使えばとりあえず動くプログラムが書けます.しかし,一般的に,そのプログラムは,大きくて動きが鈍くなります.汎用ライブラリが肥大なのに加え,設計がおろそかになりがちだからです.それでも,今なら,「ハードウェアが遅い」と言い訳できるかも知れません.しかし,それが我々プログラマのあるべき姿勢でしょうか?

 MS-DOSの時には,我々は,遅いCPUと小さなメモリ,少ないディスク容量の環境下でも,快適に動くプログラムを書き,「プログラミングは芸術だ」と言われました.あえて,難しいC/C++を使おうという信念を貫くのであれば,Windowsプログラムも芸術にしたいと思います.そして,そのためには,プログラミング技術と磨くとともに,その技術と方法論との調和が必要になります.

 本書は,3つのユーティリティ・プログラムの開発を例に挙げて,Windows3.1のプログラミングを見直す(第1章から第6章)とともに,それらのWindows95への移植(第7章)を試みます.また,簡単ですが,これから発展が期待されるOLEオートメーションの説明(第8章)も行います.

 筆者自身,一流のプログラマとは言い難いですが,1つのプログラミングのあり方として参考にしていただけら幸いです.また,執筆にあたり,読者の方のC/C++言語の知識,およびWindowsに対する理解を前提条件とさせていただきました.その辺の不明な点は,別な書籍を参照くださるようお願いいたします.

目次(章構成)

第1章 Windowsプログラミング事始め
◆Windowsの基本プログラム
 (1)新しい変数型
 (2)ハンガリ記法
 (3)WinMain[]関数
 (4)RegisterClass[]関数
 (5)CreateWindow[]関数
 (6)ハンドル?インスタンス??
 (7)事象駆動型プログラム
 (8)ウィンドウプロシージャ
 (9)メッセージの送り方(Post)
 (9')メッセージの送り方(Sent)

第2章 スクリーンセーバー起動プログラムの作り方
◆スクリーンセーバー起動プログラム
 (1)処理の流れ
 (2)スクリーンセーバーを起動するには
 (3)関数の呼び出し

第3章 ディスプレイ上のウィンドウをクリップボードに取り込む方法
 (1)WinClipの仕様
 (2)処理の流れ
 (3)画面上にビットマップを展開
 (4)WinMain[]関数の説明
 (5)ウィンドウプロシージャの説明
 (6)その他の注意事項
 コラム 状態遷移図について
 コラム GetSystemMetrics関数について


第4章 クラスを作ってオブジェクト指向プログラミングを試みる
 (1)ビットマップ(BITMAPPER)クラス
 (2)ウィンドウ検索屋(WINDOW FINDER)クラス
 (3)WinClipウィンドウ(WINDOW MANAGER)クラス
 (4)WinClipカーソル(CURSOR MANAGER)クラス
 (5)clip window[]関数
 (6)ウィンドウプロシージャ

第5章 汎用クラスの作成とクラスの効果的な活用法
◆筆者の汎用クラス
(1)文字列切断屋
(2)文字列検査屋
(3)その他の関数

第6章 WinBatchプログラムの設計
 (1)ロゴ表示
 (2)ウィンドウクラス登録
 (3)ウィンドウ作成
 (4)広域変数の初期化
 (5)リストボックスのサブクラス化
 (6)ダイアログボックスの初期化
 (7)コマンドライン解析
 (8)ウィンドウプロシージャ
 (9)ドラッグ・アンド・ドロップ
 (10)バッチ処理に関する流れ
 (11)NotifyRegister
 (12)バッチ行の解析と実行
 (13)アトム

第7章 Windows3.1プログラムとWindows95へ移植する手順
◆ScrnSavaの移植
◆WinClipの移植
 (1)ロゴ表示をマルチスレッドで処理
 (2)アイコンがないことへの対処
 (3)ウィンドウクラスとWinMainの第二引数
 (4)int型が32ビットになったことへの対処
 (5)SetCaptureの仕様の差異への対処
◆WinBatchの移植
 (1)マルチスレッドの利用
 (2)WinMain[]の第2引数の代替え

第8章 OLEオートメーションのプログラミング
◆OLEオートメーションの概要
◆レジストリデータベース
◆サンプルプログラムの仕様
◆タイプライブラリ
◆OLEサーバー
◆OLEクライアント