教材名 Win32APIプログラミング
教材名2
教材ID 42
教材作成者名 清水 秀輝; 米田 光伸
教材作成日 1997-09-01
改訂情報
ジャンル名 高度教材
分野名 情報・通信系
業種名 情報サービス業
職務名 プログラム作成・開発、システムエンジニアリング (ネットワーク/データベースエンジニアリング含む)
職務構成名 プログラム設計・開発技術
区分名 教材
職業名 システムエンジニア
 指導案


1.使用機材・資材一覧
・メインテキスト   「C/C++プログラマのためのWindows95プログラミング」
・提示用テキスト   「Windows95 API バイブル1」   「Windows95 API バイブル2」
・操作説明書(資料5-1)
・サンプルプログラムの完成したプロジェクト (その他形式 98KB、その他)
・穴埋め用ソースファイル (その他形式 12KB、その他)
・演習問題(資料5-2)
・演習問題解答例(資料5-3)
・配布用補助資料(資料5-4)

指導案資料4-1    指導案資料4-2   指導案資料4-3   指導案資料4-4

2.訓練事前準備項目
・講師用及び受講者用の各クライアントマシンへ Microsoft Visual C++ Ver.4.0 をインストールし、動作を確認する。
・講師用及び受講者用の各クライアントマシンの作業ドライブに \My_Projectフォルダを作成する(このフォルダに、各サンプルのプロジェクトを保存するフォルダを作成していく)。
・講師用及び受講者用の各クライアントマシンの作業ドライブに \Sample_Project フォルダを作成し、このフォルダに、各サンプルプログラムの完成したプロジェクトをフォルダごとにコピーする。
・講師用及び受講者用の各クライアントマシンの作業ドライブに \Blank_Code フォルダを作成し、このフォルダに、各穴埋め用ソース ファイルをフォルダごとにコピーする(プロジェクトワークスペース ファイルは含まない、*.c、*.rc、*.h だけ)。
・セミナー支援ディスプレイシステム及びマイクの動作を確認する。
・メインテキスト、配布用補助資料、操作説明書及び演習問題を受講者席に配布する。


3.指導展開法

基本的に本コースはメインテキスト(以下テキスト)に沿って展開していきます。テキストは全体で10章あるので、1日に当たり2章がだいたいの目安になっています。以下に、所要時間と各項目での指導上のポイントを示します。

【1日目】
9:30 はじめに
・挨拶
・自己紹介
・テキスト等、教材の確認
・コースの内容を配布用補助資料により説明
・受講者の前提条件を配布用補助資料により説明
・習得のコツを配布用補助資料により説明
・コースのスケジュールをテキストの目次により説明
・コースの位置づけについて、テキストの「監修者の言葉」から説明する。
9:50 教育システムの説明
・パソコンの構成
・使用OS、開発ツールの説明
9:52 Windows95プログラミングの基礎知識(テキストp 2~13)
・メッセージ処理については配布用補助資料により説明
10:23 開発ツールの使用法
・Visua C++の使用法を説明(操作説明書を参照)
10:32 スケルトンプログラムの作成(テキストp16~p18)
11:00 休憩
11:15 スケルトンプログラムの解説(テキストp19~30)
12:30 昼休み
13:30 メッセージボックス関数の説明(テキストp32~34)
13:35 Windows95のメッセージ(テキストp34~36)
13:47 キー応答プログラムの解説(テキストp39)
13:53 キー応答プログラムの作成(テキストp37~38)
14:07 テキスト表示処理の説明(テキストp39~p42)
14:17 テキスト表示プログラムの作成(テキストp42~p44)
14:30 再描画処理の説明(テキストp47~p49)
14:43 再描画プログラムの作成(テキストp49~p51)
15:00 休憩
15:15 再描画メッセージの生成法(テキストp52~p53)
15:20 再描画メッセージの生成プログラムの作成(テキストp53~p55)
15:40 メッセージの生成プログラムの作成(テキストp56~p57)
15:50 マウスメッセージ応答法(テキストp57~p58)
15:55 マウスメッセージ応答プログラムの作成(テキストp58~p60)
16:15 ダブルクリック応答プログラムの作成(テキストp61~p63)
16:30 第1日終了


【2日目】
9:30 Windows のユーザーインターフェースの把握(テキストp65)
・いくつかの基本的なユーザーインターフェースはウィンドウズで既に定義されて用意されている点を強調する
・ウィンドウズの定義済みインターフェースにはどんなものがあるのかを把握しておく(メニュー、ダイアログボックス、ツールバー等)
9:32 リソースの取り扱い(テキストp66~67)
・リソースとは何か、作成するアプリケーションにどのようにリソースを取り込むのか、ウィンドウズはリソースをどのように扱うのかを理解する。
9:40 メニューの概要と定義方法(テキストp67~70)
9:55 メニュー選択への応答(テキストp70~72)
10:00 メニュー応答プログラムの作成(テキストp69,p70,p72~76) ・テキストp76 のミスプリ説明
10:35 プログラムの補足説明 ・CrateWindow() 関数でのメニューの指定 ・メッセージボックスの戻り値の使い方 ・DestroyWindow() 関数によるウィンドウの削除
11:00 休憩
11:15 アクセラレータキーの概要と定義方法及び実装(テキストp76~80)
11:35 アクセラレータ追加プログラムの作成(テキストp78~79、p80~82)
11:50 ホットキーについて簡単に説明(テキストp83~85)
11:53 メニューの動的管理(テキストp82、p86~88)
12:10 動的メニュー管理プログラムの作成(テキストp88~94)
12:30 昼休み
13:30 プログラムの解説
13:35 メニューの動的生成と削除とプログラムの解説(テキストp96)
13:45 メニューの動的生成プログラムの作成(テキストp96~100)
・余裕のある人に、演習問題の1番をやってもらう
14:10 ダイアログボックスの概要(テキストp101~104)
14:15 ダイアログ リソースの定義とダイアログ関数(テキストp105~109)
14:30 ダイアログ プログラムの解説(テキストp106、p107~108、109~113)
・修正個所の説明も含める
15:00 休憩
15:15 リストボックスの扱い方(テキストp113~120)
15:35 エディットボックスの扱い方(テキストp120~123)
15:40 エディットボックス&リストボックス プログラムの作成(穴埋め)
(テキストp115、p120、p121、p124~129)
・余裕のある人に、演習問題の2番をやってもらう
16:10 プログラムの詳細解説
16:30 第2日終了


【3日目】
9:30 モードレスダイアログボックスの生成とメッセージの処理
(テキストp130~131)
9:40 モードレスダイアログボックス プログラムの作成
(テキストp132~138)
・余裕のある人に、演習問題の3番をやってもらう
10:00 スクロールバーの操作方法(テキストp140~143)
・Windows95 APIバイブルp371ページの図を活用する
10:40 プログラムの解説(テキストp144~150)
10:50 水平スクロールバーを処理するコードを追加する
11:00 休憩
11:15 スクロールバー コントロールの解説(テキストp151~152)
11:25 チェックボックスの使い方(テキストp153~154)
11:33 ラジオボタンの使い方(テキストp155~156)
11:40 タイマーの使い方(テキストp157~158)
11:45 カウントダウン プログラムの解説(テキストp158~165)
12:00 カウントダウン プログラムの作成(穴埋め)(テキストp158~165)
12:25 スタティックコントロール(テキストp167~168)
・WS_GROUP スタイルを説明し、プログラムにグループボックスを追加する
12:30 昼休み
13:30 スタンドアローン型コンロトール(テキストp169~170)
13:40 ビットマップの表示(テキストp172~176)
・これができるようになると、クライアント領域の際描画の問題を解決できるようになる
14:10 ビットマップ表示プログラムの作成(テキストp173、p176~179)
・スケルトン プログラムを元に作成する
14:30 再描画問題の3つの解決法(テキストp179~180)
14:33 仮想ウィンドウを用いた再描画解決に必要な API 関数の説明
                (テキストp180~182)
14:43 仮想ウィンドウの生成(テキストp182~183)
14:55 仮想ウィンドウ プログラムの作成(穴埋め)(テキストp184~187)
15:00 休憩
15:35 すべての画面出力を WM_PAINT メッセージ経由で行う(テキストp189)
・仮想ウィンドウ プログラムの修正
・ちらつきを消す方法
15:55 ウィンドウズの再描画処理の仕組み
・無効領域(更新領域)の生成と、WM_PAINT メッセージ
・BeginPant() 関数と無効領域の関係
・InvalidateRect() 関数と UpdateWindow() 関数の違い
・BeginPaint() 関数による キューに存在する WM_PAINT メッセージの削除
16:30 第3日終了


【4日目】
9:30 テキスト操作の必要性(テキストp188~190)
9:33 テキストカラーと背景カラーの設定(テキストp190~191)
・背景表示モードは飛ばす
9:38 テキストメトリクス(テキストp192~194)
・これを使って、改行幅を求める
・Windows95APIバイブルp565 の図を使って説明
9:45 文字列の長さの取得方法(テキストp194)
9:50 テキスト表示プログラムの作成(穴埋め)(テキストp195~198)
・時間の余っている人に、テキストp199 の仮想ウィンドウプログラムの手直しをやってもらう
10:10 プログラムの解説
10:17 仮想ウィンドウプログラムの手直し(テキストp199~200)
・簡単に説明して、デモを見せる
10:20 コモンコントロールの概要(テキストp201~204)
10:35 ツールバーの実装方法(テキストp204~209)
・説明がする部分が長いので、重要な点を強調してメリハリをつけること!
・重要な点
- WS_CHILD スタイルと TBSTYLE_TOOLTIPS スタイル
- TBUTTON 構造体
- ツールバー メッセージ( TB_CHECKBUTTON )
- WM_NOTIFY 通知メッセージと TOOLTIPTEXT 構造体
- ボタン用のビットマップの作成
11:00 休憩
11:20 ツールバー プログラムの概要(テキストp209~221)
11:40 ツールバー プログラムの作成(穴埋め)(テキストp209~221)
・余裕のある方に、バグ(4.テキストの補足説明事項の「p214、215 スクロール時のバグ」を参照)の原因と解決方法を考えてもらう。
12:30 昼休み
13:30 プログラムの解説
・ダラダラやると長くなるので、重要な点を識別して引き締めてやる
・重要な点
- P212 ツールバーとコモンコントロールの初期化
- P213 WM_NOTIFY メッセージの処理
- P214 更新矩形からツールバーを除外する処理
- P217 ヘルプ表示時のツールバーのボタンの引火状態の切り替え処理
- P218 ツールバーのサイジング処理
- P220 ツールバーのボタン表示に使うビットマップ リソースの定義
・GetOpenFileName、GetSaveFileName は後回し
・バグ修正の解説
14:20 コモンダイアログボックス(テキストP224~230)
・ワードパッドやペイントなどを使って、実際の例を見せる。
14:30 アップダウンコントロールとトラックバーコントロール
(テキストp232~238)
14:50 タイマー プログラムの概要(テキストp238~246)
・完成したプログラムを実際に動かして見せて、プログラムのポイントを説明する
15:00 休憩
15:15 タイマー プログラムの作成(穴埋め)(テキストp238~246)
15:50 プログラムの解説
16:10 プログレスバーの追加(テキストp251~253)
16:30 第4日終了


【5日目】
9:30 スレッドの概要(テキストp256~259)
10:00 マルチスレッド プログラムの作成(テキストp259~263)
・テキストp262 のミスプリ。
10:25 演習:ExitThread()
10:40  プログラムの解説
10:45 プライオリティの説明(テキストp264~265)
11:00 休憩
11:15 プライオリティ プログラムの作成(テキストp265~266)
11:25 演習:TerminateThreak()
11:35 プログラムの解説
11:40 シンクロナイズの説明(テキストp267~271)
12:10 セマフォ プログラムの作成(テキストp271~275)
12:30 昼休み
13:30 プログラムの解説
13:45 プロセス マルチタスク(テキストp277~280)
14:00 グラフィックの説明(テキストp282~291)
14:35 グラフィック プログラムの作成(テキストp291~299)
15:00 休憩
15:40 プログラムの解説
16:15 まとめ

4.テキストの補足説明事項

テキストの補足説明事項

※上記以外の資料(「教材」と「実技関連説明書」など)は、 こちら(ユーザ名=ユーザIDとパスワードが必要です)。
ユーザ名とは会員登録時に発行されたユーザIDを指します。
ユーザ名とパスワードをお持ちでない方は教材作成支援情報メニュー一覧から会員登録を行って下さい。