スタンダード Visual C++
2004年5月28日紙版発売
常岡伸二 著
B5変形判/456ページ
定価3,058円(本体2,780円+税10%)
ISBN 4-7741-2042-1
ただいま弊社在庫はございません。
書籍の概要
この本の概要
ドットネット環境ではプログラミング言語の違いによって,成果物としてのプログラムの機能・性能に差はなく,VC++.NETとVB.NETの違いは文法だけです。そのため,Windows上の高度な開発言語として,従来のVC++が再び注目されています。本書は,VC++の従来の方法である,MFCやWin32APIを使ったプログラム開発の入門書です。
こんな方におすすめ
- VC++の方法である、MFCやWin32APIを使ってプログラム開発を行う方
目次
本書における注意点
はじめに
1 Visual C++でのアプリケーション開発
- 1-1 Visual Studio .NET 2003の特徴
- .NET Frameworkへの対応
- ソリューション
- 使い勝手の向上
- 1-2 Visual Studio .NETが提供する開発ツール
- 最も重要なウィンドウ群
- ソリューション エクスプローラ... /リソース ビュー... /プロパティ ウィンドウ...
- テキストエディタ
- ワードラップ... /インクリメンタル検索... /[戻る]ボタン・[次に進む]ボタン... /コードのアウトライン表示... /クリップボードリング... /インテリセンス...
- リソースエディタ
- 多機能なヘルプ群
- ダイナミックヘルプ... /キーワード検索...
- 1-3 アプリケーション ウィザードを中心とするプログラム開発
- 基本的なアプリケーション開発フロー
- アプリケーション ウィザードの概要
- アプリケーション ウィザードを使ってみる
- リソースエディタを使ってみよう
- リソースファイルの追加... /アイコンの編集... /プログラムからリソースへの参照...
- 1-4 コーディングとプログラムの実行
- コーディング(文字列の表示)
- ビルドと実行
- ビルド... /プログラムの実行...
- 1-5 デバッグ
- デバッグ(ブレークポイント)
- ユーザ名の表示
- 原因の究明
2 Windowsのプログラミングスタイル
- 2-1 Windowsアプリケーション開発の歴史
- MS-DOSからWindowsへ
- Windowsオペレーティングシステム
- アプリケーションインターフェイス
- メモリ空間の拡大
- 32ビット対応
- プラットフォームの統一
- 2-2 Windowsアプリケーションの2つの形式
- Windowsアプリケーション
- Windowsアプリケーション(ウィンドウを表示しない)... /コマンドプロンプトでのコンパイル...
- コンソールアプリケーション
- コマンドプロンプトありき...
- 2-3 Windowsプログラミングの基礎
- Windowsプログラミングで利用するデータ型
- UNICODE
- 自動的にANSIとUNICODEを変更する型宣言...
- 変数の命名規則
- 構造体の定義
- 一般的な定義方法... /ポインタ型を含む場合...
- 関数名の定義
- ハンドル
- 2-4 ウィンドウ制御の概論
- イベント駆動
- 擬似マルチタスク... /イベント駆動とその限界... /現在のWindowsシステムにおけるウィンドウ制御...
- ウィンドウを表示するプログラム
- ウィンドウを開くWindowsアプリケーションの作成...
- 2-5 ウィンドウ制御の実践その1(基本)
- アプリケーションウィザードでの作成
- ヘッダーファイルのインクルードと既定値の定義
- Windowsのメイン関数と変数の定義
- WinMain関数... /変数の定義...
- ウィンドウクラスの登録
- ウィンドウの生成と表示
- メッセージループ
- メッセージループを構成するAPI... /アプリケーションの終了...
- ウィンドウプロシージャ
- メッセージクラッカ
- 2-6 ウィンドウ制御の実践その2(リソースの追加)
- リソースファイルの追加
- ウィンドウへのメニューの追加
- ウィンドウにメニューリソースを追加する... /メニューを作成する... /IDの変更... /“&”の秘密...
- メニュー選択時の処理
- メニュー選択時に処理が行われる... /リソースIDのありか... /ウィンドウクラスにメニューを設定する... /メニューの処理を追加する... /メニューID格納用ローカル変数の追加... /ID_QUITの処理... /ID_ABOUTの処理... /処理の実行...
- アイコンの追加
- アイコンを追加する... /アイコンの利用...
- バージョン情報の追加
- バージョンリソースを追加する...
- 2-7 ウィンドウ制御の実践その3(デバイスコンテキストの操作)
- WM_PAINTメッセージデバイスコンテキスト
- WM_CHARメッセージ
- 描画処理の追加(コーディング)
- WM_PAINTの処理... /WM_CHARの処理...
- デバイスコンテキストの概念
3 MFCプログラミング基本編
- 3-1 MFC
- 開発コード名はAFX
- MFCの原型...
- 基本構造
- イベントハンドラとメッセージの関係
- ウィンドウを開くアプリケーションのクラス構成
- CWinApp... /CFrameWnd(CMDIFrameWnd)... /CViewとCDocument...
- CWinAppクラス
- 3-2 CWinAppクラスの動作を確かめる(実践)
- プロジェクトの作成
- コードの全容
- MFCの利用者に見えている世界
- 擬似コードのビルド・実行
- コンストラクタ・デストラクタ
- CConAppクラスの機能をCTestクラスの機能で置き換える処理... /new演算子でのインスタンス生成...
- MFCアプリケーションにmain関数が存在しない理由
- CWinAppの機能...
- 仮想関数
- 3-3 最も簡単なMFCアプリケーション作成
- CFrameWndクラス
- シングルドキュメントインターフェイス... /マルチプルドキュメントインターフェイス...
- プロジェクト作成の基本
- アプリケーションウィザードの作成... /バージョンマクロの定義とヘッダーファイルのインクルード...
- MFCプログラミングの基本
- メッセージマップ
- ビルド・実行...
- オブジェクト指向プログラミング
- class CSimpleMfcApp : public CWinApp...
- 3-4 メッセージ処理(イベント)
- メッセージの追加
- メッセージマップエントリ... /ハンドラ関数の宣言...
- デバイスコンテキストの取得
- OnPaintでデバイスコンテキストを取得する...
- OnPaint以外のメッセージでデバイスコンテキストを取得する
- タイマーイベント
- ファイル名のドラッグアンドドロップ
- 3-5 ドキュメント・ビューアーキテクチャ
- ドキュメント・ビューアーキテクチャの目的
- CDocumentクラス
- ビューとの連携... /オブジェクト間の連携... /MVCモデルとドキュメント・ビューアーキテクチャ...
- CViewクラス
- フレームウィンドウの分離... /派生クラス...
- 3-6 ドキュメント・ビューの実践
- 作成するプロジェクト
- 初期設定の変更
- ドキュメントが管理する情報
- ダイアログボックスの作成
- MFC クラス ウィザード
- オーバーライド
- オーバーライドボタン...
- 変数の定義
- メンバー変数の追加ウィザード
- DDXとDDV
- ダイアログデータエクスチェンジ(DDX:Dialog Data eXchange)... /ダイアログデータバリデーション(DDV: Dialog data validation)...
- 3-7 ファイルインターフェイスの実装
- Webブラウザの表示
- Webブラウザアプリケーション固有の新規作成処理
- CDocument::OnNewDocumentのカスタマイズ... /アプリケーションを開いたとき... /メニューから[新規作成]を選択されたとき...
- シリアライズ
- Webブラウザの制御
- Webブラウザが表示しているHTMLの保存
- 操作メニューの追加
- メニューの追加... /イベントの追加...
- エラー発生時のメッセージボックス
4 MFCプログラミング上級編
- 4-1 メールスロットの利用
- メールスロット
- メールスロットサーバー... /メールスロットクライアント... /メールスロットへのアクセス...
- プロジェクトの概要
- メールスロットプロジェクトの作成
- ダイアログボックスのデザイン
- メンバー変数の追加
- コントロールのスタイル
- ダイアログベースのアプリケーションの終了処理
- クラスのメンバー変数の追加
- ウィンドウの初期化
- イベント処理の追加と実装
- OnInitDialog関数で行う初期化処理... /OnDestroyで行う終了処理... /OnTimerで定期的に受信メッセージを取得する... /送信ボタンが押された際の処理...
- 4-2 ソケットプログラミング その1(サーバー作成)
- WinSock
- ソケットはTCP/IPで通信を行う... /Windows用のソケット... /ソケットで通信するときの相手を特定する方法...
- ソケットサーバーアプリケーションのプロジェクト作成
- アプリケーション ウィザード...
- 初期化処理と終了処理
- WinSockを利用する際の初期化処理... /アプリケーション ウィザードが追加するソケットの初期化処理...
- ダイアログボックスのデザイン
- コントロールの配置... /メンバー変数の追加...
- ソケットサーバー処理の手順
- クライアントとの通信処理の作成
- クラスの追加... /受信処理... /コンストラクタの処理... /クライアントからの接続処理...
- クライアントからの接続待ち合わせ処理の作成
- クラスの追加... /接続待ち合わせ... /コンストラクタの処理... /クライアントからの接続処理... /クラス宣言の入れ子問題...
- ソケットの生成
- CAsyncSocket::Create... /ソケット生成の組み込み... /Internet Explorerで接続してみる...
- 4-3 ソケットプログラミング その2(クライアント作成)
- コンソールアプリケーションでMFCを使う
- プロジェクトの作成... /ヘッダーファイル... /CWinAppクラスのインスタンス生成とAfxWinInitによるMFCの初期化...
- サーバーへの接続
- CSocketクラスでのサーバーへの接続...
- 通信処理
- 終了処理...
- 4-4 HTTPプログラミング 基本
- HTTPとは
- MFC WinInetクラスによるHTTPクライアント
- プロジェクトの作成... /ダイアログボックスのデザイン... /メンバー変数の追加... /ヘッダーファイルのインクルード...
- 接続までの処理
- OnInitDialogで行う初期化処理... /リクエストを実行する処理... /ローカル変数... /URLの解析... /リクエストの動作フラグ... /インターネットインフォメーションサービス(IIS)... /CInternetSessionインスタンスの生成... /ボタン連打の無効... /Webサーバーへの接続処理... /例外処理...
- リクエストの処理
- リクエストの準備... /リクエストの実行... /リダイレクトの動作... /Locationヘッダーの動作...
- 認証処理
- 基本認証... /認証通過後のステータスコード... /情報の取得と表示...
- 終了処理
- 終了処理の記述... /エラー処理...
- 4-5 HTTPプログラミング 応用(FTPクライアント作成)
- FTPクライアントの作成
- プロジェクトの作成... /ダイアログボックスのデザイン... /メンバー変数の追加... /ヘッダーファイルのインクルードとメンバー関数の追加...
- 初期化処理
- リクエストを実行する処理(値の取得)
- エディットボックスの値の取得... /動作モードの取得... /PASVモード...
- FTPサーバーへの接続
- ディレクトリの移動...
- ファイルの送受信
- 送信:PUT... /受信:GET...
- 例外処理をスローする
- 4-6 ActiveXの利用
- WinHTTP
- オートメーションオブジェクト(AvtiveX)
- ActiveX版WinHTTPを利用するアプリケーション作成
- アプリケーション ウィザードにおける設定... /ダイアログのデザイン... /メンバー変数の追加...
- 初期化処理
- MFCアプリケーション ウィザードが追加するActiveXの初期化処理... /OnInitDialogで行う初期化処理...
- Typelib クラス追加ウィザード
- ヘッダーファイルがなくとも利用可能... /TypeLibからMFCクラスを自動生成する... /プログラミング...
- WinHTTPでのHTTPリクエスト処理(OnBnClickedRequestの実装)
- CreateDispatch...
- VARIANT型の利用
- TypeLib... /VARIANT型... /VARIANT型へのデータの設定... /Open関数とSend関数... /レスポンスボディの取得... /文字化け... /安全配列...
- WinHTTPオブジェクトを利用するときの注意点
- 4-7 マルチスレッドプログラミング
- MFCアプリケーションでのスレッド
- ユーザーインターフェイススレッド... /ワーカースレッド... /ワーカースレッドへの引数...
- マルチスレッドアプリケーションでのプロジェクト作成
- アプリケーション ウィザードにおける設定... /コーディング内容...
- スレッドの引数に複数の変数を渡す
- スレッドで生成される関数の中身...
- 実行
- デバイスコンテキストの解放
- 4-8 DLLの作成
- DLLにコードを分割する必要性
- DLLのリンク
- DLLの検索パス... /LoadLibrary..
- DLLでAPIやクラスを公開する方法
- __declspec(dllexport)の利用... /他の言語からの利用... /DEFファイルの利用...
- Visual C++で作成できるDLL
- MFCを利用しないDLLの作成
- アプリケーション ウィザードにおける設定...
- 標準 DLL
- アプリケーション ウィザードにおける設定... /自動生成されたソースファイルの修正...
- DLLを利用したアプリケーションの作成
- アプリケーション ウィザードにおける設定... /ヘッダーファイルのコピー... /LIBファイルとDLLファイルのコピー... /プログラムの作成... /プロジェクトのビルド... /DLLTestアプリケーションの実行...
- DLLのデバッグ
- 必要なファイルのコピー... /デバッグ用アプリケーションの登録... /デバッグ実行...
5 Win32API
- 5-1 マルチスレッドの同期処理
- ファイルへのログ出力処理の作成(プロジェクトの作成)
- アプリケーション ウィザードにおける設定...
- ログ出力処理のクラス化のメリット
- ログ出力処理を記述するファイル...
- 同期オブジェクトとマルチスレッドプログラミング
- 同期オブジェクト... /同期オブジェクトの種類...
- マルチスレッドプログラミングで考慮しなければならないこと
- その1 グローバル変数の利用は原則禁止... /その2 スレッドの領域はヒープから取得... /その3 同時に1つしか実行できない処理への対応... /その4 どのスレッドで出力されたログかの判別... /その5 処理がシリアライズされる,又はデッドロックする危険性...
- クリティカルセクションの初期化
- 定数...
- ログ出力の動作
- ログ出力開始(CLogFile::StartLog)... /ファイルオープン後の動作... /ログ出力停止(CLogFile::StopLog)...
- ログに出力する書式を作成する
- ログファイルへの書き込み
- システムエラーメッセージ文字列の取得
- エラーメッセージの取得... /ログの出力...
- プログラムの実行
- 5-2 アプリケーション間での通信
- プロセス間の通信
- メモリマップドファイル... /もっと簡単な方法はないのか?...
- ウィンドウメッセージ
- WM_COPYDATA...
- パイプ
- 名前なしパイプ... /名前付きパイプ...
- 名前付きパイププログラミング(サーバー作成)
- アプリケーション ウィザードにおける設定... /名前付きパイプの生成... /スレッドで名前付きパイプサーバーを実行... /スレッドの終了... /OVERLAPPED構造体... /処理スレッドの起動... /スレッド終了のチェック... /終了処理...
- 名前付きパイププログラミング(クライアント作成)
- アプリケーション ウィザードにおける設定... /CallNamedPipe...
- 名前付きサーバー・クライアントシステムの実行
- サーバーの実行... /クライアントの実行...
- 5-3 実行が制限されているAPIの実行方法
- 特権が必要なAPI
- 特権を有効にするには
- システムの再起動アプリケーションのプロジェクト作成
- コーディングの手順
- 再起動
- メイン処理
- 5-4 Win32サービス
- サービスプロセス
- ユーザーとの関係... /サービスの設定... /サービス制御マネージャ... /設定の保存...
- サービスプログラミングのプロジェクト作成
- サービスのインストール
- サービスのインストール...
- サービスの起動
- インストーラーのプログラミング
- サービスのメイン関数(第1段階)
- サービスメインの処理(第2段階)
- サービスの初期化(第3段階)
- サービス開始(第4段階)
- サービスの動作状態の制御
- サービスのアンインストール
- サービスの停止... /サービスの削除... /アンインストーラーのプログラミング...
- テストサービスの実行
- サービスの登録... /サービスの実行... /サービスの登録解除...
- 5-5 ファイルの移動とディレクトリアクセス
- ディレクトリへのアクセス
- ディレクトリを作成するAPI... /ディレクトリを削除するAPI... /プロセスのカレントディレクトリを取得・設定するAPI...
- ファイルのコピーと移動
- ファイルをコピーするAPI... /ファイルを削除するAPI...
- ディレクトリ名又はファイル名を変更・移動するAPI
- ファイルを検索するAPI
- 複数のファイルを検索するAPI
- ファイルを検索するプログラム
- ディレクトリのチェック... /ファイルの検索... /自分と親ディレクトリ... /再起呼び出し... /FindNextFile...
- プログラムの実行
- 5-6 ショートカットの作成
- Win32APIからCOMオブジェクトを利用するには
- ショートカットを作成するアプリケーション作成
- インクルードファイル... /COMの初期化とオブジェクトの取得... /ショートカットが動作するために必要な情報の設定...
- プログラムの実行
- 5-7 特別なフォルダのパスを取得する
- 特別なフォルダパス
- プログラムの作成
- アプリケーション ウィザードにおける設定... /インクルードファイル... /スペシャルフォルダのパスを取得する...
- プログラムの実行
- 長い関数とわかりやすさ
6 アプリケーションのデバッグ手法
- 6-1 Visual Studio .NETのデバッグ機能
- コンパイラ
- ビルドオプション設定...
- ビルド時間の短縮
- プリコンパイル済みヘッダーの利用... /インクリメンタルリンク... /簡易リビルド... /ヘッダーファイルのインクルードガード... /デバッグ情報の生成...381
- ビルド実行
- 警告レベルの確認... /ビルドの実行...
- 6-2 デバッグ情報の生成
- デバッグの準備
- MFC,ATL,Cランタイムのソース...
- デバッグ情報
- コンソールアプリケーションをデバッグするための設定
- デバッグツールバー
- 6-3 デバッグウィンドウ
- 出力ウィンドウ
- 自動変数ウィンドウ
- ローカルウィンドウ
- ウォッチウィンドウ
- 呼び出し履歴ウィンドウ
- ブレークポイントウィンドウ
- タスク一覧ウィンドウ
- 6-4 デバッグ用マクロ
- アサーション
- ASSERTマクロ... /VERIFYマクロ...
- トレース
- TRACEマクロ... /DEBUG_NEWマクロ...
7 アプリケーションの配布
- 7-1 Windowsシステムの諸問題
- レジストリの肥大化
- モジュール更新 = 再起動
- DLL地獄
- 7-2 共有DLLのリンク方法
- 静的リンク
- 動的リンク
- 共有DLLを利用したアプリケーションの配布
- 7-3 アプリケーションが使う共有DLL
- Depends.Exe
- プロファイリング...
- dumpbin.exe
- dumpbin.exeの主なオプション
- /HEADERS... //ALL... //DISASM... //DEPENDENTS... //IMPORTS... //EXPORTS...
8 .NET Frameworkへの対応
- 8-1 .NET概要
- .NET Framework
- オペレーティングシステム...
- 8-2 .NET Frameworkが解決するシステムの諸問題
- INIファイルやレジストリからXMLへ
- configファイルを参照するアプリケーション
- アプリケーション ウィザードの設定...
- レジストリに依存しないオブジェクト
- アプリケーションの動作環境
- .NET Framework上で動作するモジュール...
- マネージコード
- 8-3 複数のプログラミング言語を融和させるCLR
- 名前空間
- アプリケーションドメイン
- 8-4 Visual C++ .NETへのステップアップ
- Visual C++ .NETのメリット
- すばやい移行... /既存のC++コンポーネントの利用... /マネージコードとアンマネージコードの混在...
- マネージコードとアンマネージコードが混在するプログラム作成
- データ型
- 命名規則
- マネージ拡張C++固有の記述
- ソースファイルの文字コード... /インクルードファイル... /文字列定数の記述方法... /マネージ型によるメモリの管理...
- 領域を確保するプログラムの作成
- ボックス化
- ボックス化を行うプログラムの作成
- namespace
- クラス
- 8-5 Windowsフォーム
- ウィンドウの形式
- ウィンドウタイプのプログラム作成
- 新アプリケーションフレームワーク(メイン関数の復活)
- フォームデザイン
- .NETの行く末
この本に関連する書籍
-
C++デバッグ技術 (Visual C++プログラマーのためのトラブルシューティング)
プログラマーが行う作業のうち大半の時間を占めるのがデバッグに関わる仕事です。バグをいかに早く,そして正確に潰せるかが,プログラマーの腕の見せ所とも言えます。...
-
最新 これからはじめるVisual C++
難しい理屈はとりあえず抜きにして,とにかくぶっつけ本番でVC++を使いながらC++でのプログラミングについて学習していこうという本です。本書で一通り学習すれば,次に...