教材名 Win32APIプログラミング(自作テキスト編)
教材名2
教材ID 232
教材作成者名 清水 秀輝; 豊嶋 啓一郎
教材作成日 1999-09-01
改訂情報
ジャンル名 高度教材
分野名 情報・通信系
業種名 情報サービス業
職務名 プログラム作成・開発、システムエンジニアリング
職務構成名 プログラム設計・開発技術
区分名 教材
職業名 情報処理技術者
指導案

 

1.使用教材、資材一覧
 ・メインテキスト(自作テキスト)
  「Win32APIプログラミング」(資料5(2)-1)
 ・補助テキスト(自作テキスト)
  「Win32APIプログラミング サンプルプログラム」(Assistance_Textフォルダ)
 ・操作説明書(資料5(1)-1)
 ・配布用補助資料(資料5(2)-2)
 ・サンプルソースコード
 ・配布用ソースコード
 
2.訓練事前準備項目
・講師用及び受講者用の各クライアントマシンへ Microsoft Visual C++ Ver.5.0 をインストールし、動作を確認する。
・講師用及び受講者用の各クライアントマシンの作業ドライブに\My_Projectフォルダを作成する(このフォルダに、各サンプルのプロジェクトを保存するフォルダを作成していく)。
・講師用及び受講者用の各クライアントマシンの作業ドライブに \Sample_Project フォルダを作成し、このフォルダに、各サンプルプログラムの完成したプログラムをフォルダごとにコピーする(プロジェクトワークスペース ファイルは含まない、*.c、*.rc、*.h だけ)。
・講師用及び受講者用の各クライアントマシンの作業ドライブに \Distribution_Code フォルダを作成し、このフォルダに、配布用ソースファイルをフォルダごとにコピーする。
・セミナー支援ディスプレイシステム及びマイクの動作を確認する。
・メインテキスト、補助テキスト、配布用補助資料および操作説明書を受講者席に配布する。
3.指導展開法
    基本的に本コースはメインテキスト(以下テキスト)および補助テキストに沿って展開していきます。テキストは全体で8章あるので、1日に当たり1~2章がだいたいの目安になっています。以下に、所要時間と各項目での指導上のポイントを示します。
 
【第1日】
9:30 はじめに
      ・挨拶
      ・自己紹介
      ・テキスト等、教材の確認
      ・コースの内容を配布用補助資料により説明
      ・受講者の前提条件を配布用補助資料により説明
      ・習得のコツを配布用補助資料により説明
      ・コースのスケジュールをテキストの目次により説明
      ・コースの位置づけについて、テキストの「はじめに」から説明する。
 
9:50 教育システムの説明
      ・パソコンの構成
      ・使用OS、開発ツールの説明
 
9:52 Windowsの基礎知識(テキストp4~5)
      API・DLLの役割と、Windowsが各種のサービスを提供する仕組みを中心に説明する。また、Windowsオぺレーティングシステムの特徴を説明する。
 
10:00 Windowsアプリケーションプログラムの流れ(テキストp6~9)
      WinMain関数の流れについて、特にメッセージ処理の仕組みを重点的に説明する。また、ウィンドウプロシージャの役割およびそれがコールされるプロセスを説明する。
 
10:30 Skeletonプログラムの解説(補助テキストp3~5)
 
////////////////////
11:00 休憩
////////////////////
 
11:15 開発ツールの使用法
      ・Visual C++の使用法を説明(操作説明書を参照)
 
11:20 Skeletonプログラムの作成(補助テキストp3~5)
 
11:50 Helloプログラムの解説(補助テキストp6~8)
 
12:10 Helloプログラムの作成(補助テキストp6~8)
      Skeletonプログラムをコピーして相違点のみ作り直すようにする。
 
////////////////////
12:30 昼休み
////////////////////
 
13:30 描画の基本手順(テキストp10~13)
      GDIおよびデバイスコンテキストの概念を説明する。GDIオブジェクトについては、ペンとブラシに話を絞るようにする。描画関数も非常に多くあるので、よく使われるもののみ説明するようにする。
 
14:00 Rectangleプログラムの解説(補助テキストp9~11)
      WM_PAINTメッセージでの描画
 
14:20 Rectangleプログラムの作成(補助テキストp9~11)
 
14:40 RandEllipseプログラムの解説(補助テキストp12~15)
      WM_PAINTメッセージ以外での描画。このサンプルプログラムのメッセージループは標準的な手法ではないので、その点を説明しておく。
 
////////////////////
15:00 休憩
////////////////////
 
15:15 RandEllipseプログラムの作成(補助テキストp12~15)
 
15:35 SetPixelVプログラムの解説(補助テキストp16~18)
 
15:50 SetPixelVプログラムの作成(補助テキストp16~18)
      描画する回数が多いので、描画に時間がかかることを体験させておく。
 
16:10 メモリデバイスコンテキスト・WM_PAINT(テキストp13~15)
      メモリデバイスコンテキストとその役割について説明する。とくにビットマップ転送の利用することの意味を説明する。
 
16:30 第1日終了
 
【第2日】
 
9:30 MemoryDCプログラムの解説(補助テキストp19~22)
 
9:50 MemoryDCプログラムの作成(補助テキストp19~22)
      SetPixelVプログラムと比べ、描画が速度が明らかに速くなっていることを確認する。
 
10:10 ScreenCaptureプログラムの解説(補助テキストp23~25)
 
10:30 ScreenCaptureプログラムの作成(補助テキストp23~25)
 
////////////////////
11:00 休憩
////////////////////
 
11:15 テキスト出力(テキストp16~17)
      フォントもGDIオブジェクトの一種であることを説明する。
 
11:45 TextOutプログラムの解説(補助テキストp26~29)
 
12:10 TextOutプログラムの作成(補助テキストp26~29)
 
////////////////////
12:30 昼休み
////////////////////
 
13:30 TextMetricsプログラムの解説(補助テキストp30~33)
 
13:50 TextMetricsプログラムの作成(補助テキストp30~33)
 
14:10 スクロールバー付きウィンドウ(テキストp17)
      スクロールバーメッセージはWPARAMを参照する、はじめての具体的な例なので、再度WPARAM、LPARAMについて説明しておくほうがよい。
 
14:20 ScrollTextプログラムの解説(補助テキストp34~38)
 
14:40 ScrollTextプログラムの作成(補助テキストp34~38)
 
////////////////////
15:00 休憩
////////////////////
 
15:15 ScrollTextプログラムVer.2の解説(補助テキストp39~43)
 
15:35 ScrollTextプログラムVer.2の作成(補助テキストp39~43)
 
16:00 キーボード入力処理(テキストp18)
      文字キーメッセージと仮想キーメッセージの違いを説明する。
      また、TranslateMessage関数の役割について再度補足するとよい。
 
16:30 第2日終了
 
【第3日】
 
9:30 EchoCharプログラムの解説(補助テキストp45~47)
 
9:50 EchoCharプログラムの作成(補助テキストp45~47)
 
10:10 EchoCharプログラムVer.2の解説(補助テキストp48~50)
 
10:20 EchoCharプログラムVer.2の作成(補助テキストp48~50)
 
10:40 ScrollTextプログラムVer.3の解説(補助テキストp51~56)
 
////////////////////
11:00 休憩
////////////////////
 
11:15 ScrollTextプログラムVer.3の作成(補助テキストp51~56)
 
11:35 マウス入力処理(テキストp19)
      下位ワード、上位ワードを別々にする、初めての例なのでその方法もあわせて説明する。また、Shiftキー等が押されているかどうかを知るには、単純にマクロとの比較ではなく、マスクをかけなければならないことも注意しておく。
 
11:50 DrawLineプログラムの解説(補助テキストp57~59)
 
12:10 DrawLineプログラムの作成(補助テキストp57~59)
 
////////////////////
12:30 昼休み
////////////////////
 
13:30 DrawLineプログラムVer.2の解説(補助テキストp60~62)
 
13:50 DrawLineプログラムVer.2の作成(補助テキストp60~62)
 
14:10 DrawLineプログラムVer.3の解説(補助テキストp63~65)
 
14:30 DrawLineプログラムVer.3の作成(補助テキストp63~65)
 
////////////////////
15:00 休憩
////////////////////
 
15:15 定義済みウィンドウクラス(テキストp20~21)
      コントロールも広義のウィンドウであることを説明する。
 
15:35 EditBoxプログラムの解説(補助テキストp66~70)
 
16:00 EditBoxプログラムの作成(補助テキストp66~70)
 
16:30 第3日終了
 
【第4日】
 
9:30 リソース概要(テキストp22)
      リソースとは何か、リソーススクリプトの記述およびコンパイルの説明。
 
9:35 イメージ系リソース(テキストp22~23)
      リソースには必ずリソース名か、リソースIDが必要であることをここで説明しておく。
 
9:50 IcoCurBmpプログラムの解説(補助テキストp71~73)
 
10:00 IcoCurBmpプログラムの作成(補助テキストp71~73)
 
10:20 ストリングテーブル(テキストp23)
      ストリングテーブルリソースを使えば文字列のハードコーディングを避けられることを説明するとよい。
 
10:40 StringTableプログラムの解説(補助テキストp74~76)
 
////////////////////
11:00 休憩
////////////////////
 
11:15 StringTableプログラムの作成(補助テキストp74~76)
 
11:35 メニュー(テキストp23~24)
      メニューを選択したときは、コントロールを操作したときと同じ
      WM_COMMANDメッセージが発生するので、それとの違いを説明する。
 
11:50 EditBoxプログラムVer.2の解説(補助テキストp77~82)
 
12:10 EditBoxプログラムVer.2の作成(補助テキストp77~82)
 
////////////////////
12:30 昼休み
////////////////////
 
13:30 EditBoxプログラムVer.3の解説(補助テキストp83~88)
 
13:50 EditBoxプログラムVer.3の作成(補助テキストp83~88)
 
14:10 アクセラレータ(テキストp24)
      メニューと同様、WM_COMMANDメッセージが発生することと違いを説明する。また、リソースIDをメニューと同じにするとひとつのメッセージハンドラでメニュー、アクセラレータともに動作することを補足しておくとよい。
 
14:20 EditBoxプログラムVer.4の解説(補助テキストp89~95)
 
14:40 EditBoxプログラムVer.4の作成(補助テキストp89~95)
 
////////////////////
15:00 休憩
////////////////////
 
15:15 ダイアログボックス(テキストp25~26)
      ダイアログプロシージャの役割やその定義について中心に説明する。
 
15:35 EditBoxプログラムVer.5の解説(補助テキストp96~103)
 
16:00 EditBoxプログラムVer.5の作成(補助テキストp96~103)
 
16:30 第4日終了
 
【第5日】
 
9:00 モードレスダイアログボックス(テキストp26)
      モーダルダイアログバックスとの違いを特に説明する。
 
9:10 EditBoxプログラムVer.6の解説(補助テキストp104~115)
 
9:30 EditBoxプログラムVer.6の作成(補助テキストp104~115)
 
10:00 コモンダイアログボックス(テキストp26)
      コモンダイアログボックスをうまく使うことにより、効率的な開発が出来ることを強調するとよい。
 
10:10 EditBoxプログラムVer.7の解説(補助テキストp116~127)
 
10:30 EditBoxプログラムVer.7の作成(補助テキストp116~127)
 
////////////////////
11:00 休憩
////////////////////
 
11:15 スレッド型マルチタスク(テキストp27~30)
      マルチスレッドのプログラムにおいてもっとも重要なことは、スレッドの同期をとることであることを特に強調する。
 
11:35 GrowingCircleプログラムの解説(補助テキストp128~130)
 
12:50 GrowingCircleプログラムの実行(補助テキストp128~130)
      コーディングは必要ないので、完成したものをコンパイル・実行のみ行う。
 
12:10 GrowingCircleプログラムVer.2の解説(補助テキストp130~136)
 
////////////////////
12:30 昼休み
////////////////////
 
13:30 GrowingCircleプログラムVer.2の作成(補助テキストp130~136)
 
14:00 ダイナミックリンクライブラリ(テキストp30)
      DLLを作ることの利点を説明する。
 
14:15 DLLSkeletonプログラムの解説(補助テキストp137~142)
 
14:40 DLLSkeletonプログラムの作成(補助テキストp137~142)
 
////////////////////
15:00 休憩
////////////////////
 
15:15 UtilityおよびEditBoxプログラムVer.8の解説
                     (補助テキストp143~164)
 
15:45 UtilityおよびEditBoxプログラムVer.8の作成
                     (補助テキストp143~164)
 
16:15 まとめ
 

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