Win32 APIシステムプログラミング
with Visual C++ 2008
- 著者 北山洋幸
- 判型 B5変型判、688頁
- 本体価格 7,800円
- CD-ROM付き
- ISBN 978-4-87783-212-4
本書の記載内容について訂正があります。
こちらを参照してください。
本書について
本書は2000年3月に発売された『Windows 2000時代のWin32 APIシステムプログラミングwith Visual C++ 6.0』を2002年に改訂し、『Visual C++ .NETではじめるWin32 APIシステムプログラミング』として出版した本の再改訂版です。おかげさまで息の長い本となり、原稿執筆開始時期から数えると、本書は10歳を迎えようとしています。今回は、前回の改訂時と異なり、大幅な増補を行いました。
最初の執筆時期から、開発環境は大きく変わりました。執筆開始時はWindowsも、Windows 98やWindows 2000が主流のオペレーティングシステムでした。ところが現在では、Windows XPでさえ古くなり、Windows Vistaの時代になっています。とは言え、本書のようにAPIを使用する本は、開発環境やWindowsのバージョンによる影響は大きくありません。つまり、本書の内容を理解していると、時代が変わっても、その技術を有効に使えると言って過言ではないでしょう。
現在では、プログラミング言語も、CやC++だけでなく、C#やJavaなどが広く使われるようになりました。筆者も、C#で本書と同じこと記述してみようと思い、C#システムプログラミングの書籍も近年執筆しました。おかげさまで、そちらの売れ行きも順調です。その本も、本書が基礎となっています。ただし、コーディングスタイルはまったく異なります。
APIを直接使うプログラミングを行う機会は、今後も減っていくことでしょう。ただ、コンピュータの基礎(Windowsに限らず)を理解しておくと、環境や言語が変わっても、それに適応するのは難しいことではありません。
ぜひ、本書を参考に、APIプログラミングならびに、コンピュータソフトウェアの理解に役立ててください。
目 次
- 第1章 メッセージ
- 1-1 メッセージの基礎
- 1-2 メッセージの送信
- 1-3 タイマーメッセージ
- 1-4 メッセージによるマウスイベント発生
- 1-5 モーダルダイアログを持つプログラム
- 1-6 モードレスダイアログを持つプログラム
- 第2章 ウィンドウ
- 2-1 ウィンドウの各サイズ取得
- 2-2 コンソールからウィンドウ表示
- 2-3 ウィンドウの移動
- 2-4 ウィンドウ表示を透過
- 2-5 クライアントエリアの透明化
- 2-6 透過するウィンドウイベント
- 2-7 変形ウィンドウ(1)
- 2-8 変形ウィンドウ(2)
- 2-9 変形ウィンドウ(3)
- 2-10 ウィンドウのZオーダー
- 第3章 DLL 139
- 3-1 単純なDLLの開発
- 3-2 エクスポート名にこだわらないDLL
- 3-3 DEFファイルを使ったエクスポート
- 3-4 __cdeclでも呼べる
- 3-5 共有ヘッダ(.h)の作成
- 3-6 変数のエクスポート
- 3-7 ダイナミックロード
- 3-8 DllMainについて
- 3-9 DLLでメモリを共有(1)
- 3-10 DLLでメモリを共有(2)
- 第4章 スレッド
- 4-1 簡単なスレッドプログラム
- 4-2 たくさんのスレッド
- 4-3 スレッドの実用例(1)
- 4-4 スレッドの実用例(2)
- 4-5 スレッドの中断と再開
- 4-6 ランタイムライブラリでスレッド
- 4-7 スレッドの強制終了
- 4-8 スレッド間でメッセージ通信
- 4-9 スレッドのプライオリティ
- 4-10 スレッドを使った画像処理
- 4-11 スレッドを多数使った画像処理
- 4-12 スレッドとクラスを使ったラプラシアンフィルタ
- 第5章 同期
- 5-1 クリティカルセクションで同期
- 5-2 クリティカルセクションで同期
- 5-3 ミューテックスで同期
- 5-4 インターロックAPIで同期
- 5-5 セマフォで同期
- 5-6 イベントで同期
- 5-7 クリティカルセクションで同期して画像処理
- 5-8 ミューテックスで同期して画像処理
- 5-9 セマフォで同期して画像処理
- 第6章 プロセス
- 6-1 コンソールからのプロセス起動(1)
- 6-2 コンソールからのプロセス起動(2)
- 6-3 MFCによるプロセス起動
- 6-4 ミューテックスを使ったインスタンス制御(1)
- 6-5 ミューテックスを使ったインスタンス制御(2)
- 6-6 セクションを使ったインスタンス間通信(1)
- 6-7 セクションを使ったインスタンス間通信(2)
- 6-8 DLLのセクションを使ったプロセス間通信
- 6-9 メールスロット(1)
- 6-10 メールスロット(2)
- 6-11 名前付きパイプ(1)
- 6-12 名前付きパイプ(2)
- 第7章 メモリマップドファイル
- 7-1 ファイルの文字数をカウント
- 7-2 ポインタを利用して内容を変更
- 7-3 ポインタを利用して文字列置換
- 7-4 プロセス間でメモリを共有
- 7-5 メモリマップドファイルを使ったプロセス間通信
- 7-6 メモリマップドファイルを使った画像処理
- 第8章 ネットワーク
- 8-1 MACアドレスを表示する
- 8-2 ローカルIPアドレスを表示する
- 8-3 リモートIPアドレスを表示する
- 8-4 htmlを表示する(ソケット編)
- 8-5 htmlを表示する
- 8-6 htmlを書き込む
- 8-7 メール送信
- 8-8 メール受信
- 8-9 ftpプログラム
■正誤表■
本文の内容に誤りがありました。 お詫びして訂正いたします。
p.15、2行目
誤
wsprintf(testMsg," 右マウスクリックの回数=%d",count);
正
wsprintf(testMsg," 左マウスクリックの回数=%d",count);
p.21、19行目
誤
while( GetMessage( &msg, NULL, 0, 0 ) != 0 )
正
while( GetMessage( &msg, NULL, 0, 0 ) > 0 )
p.50、図1.33
誤
図1.33 ● Ctrl キーを押した様子
正
図1.33 ● [テスト]ボタンを押した様子
p.54、図1.36
誤
図1.36 ● Ctrl キーを押した様子
正
図1.36 ● [テスト]ボタンを押した様子
p.70、10行目
誤
ているかチェックします。エンディアンに依存しないようにバイト単位で処理します。もし、
正
ているかチェックします。もし、
p.130、7行目
誤
様子も示します
正
様子も示します。