テキストの項目等 |
指導の展開
|
経過時間 |
導入
|
○受講生受付
○講師自己紹介
○施設使用および昼食に関する説明、注意
○テキスト、補助資料の確認
|
10分 |
Visual C++とは
|
○Visual C++の現状、バージョン等における説明。 テキストの環境(Ver2.0をもとにしている)、セミナーで使用する環境 (Ver4.0を使用する)について。
○Visual C++は言語ではなくツールである。
○MFCという強力なクラスライブラリを持っている。
|
15分 |
例題1
ウィンドウを表示しよう(p.12-28)
|
○MS-DOSにおいてC言語で画面にHello Worldを表示するプログラムとC++言語で画面に表示するプログラムを説明。また、Windows APIを使って(MFCを使わないで )
Windows上でHello Worldを表示するプログラムの一部を説明。
○受講生にテキストのex01.cppを入力してもらい、動作確認後ソースコードを見ながらボイントを説明 -
尚、ここでVer4.0においてAppWizardをつかわないでアプリケーションを作成するための方法を説明する。
手順(1) プロジェクトの作成
手順(2) Aplicationの作成
手順(3) ソースコードの入力
手順(4) プロジェクトへの追加
手順(5) コンパイル
手順(6) 実行
また、オンラインヘルプの見方、定義位置の見方もex01.cppのソースを使って説明。
|
80分 |
|
休憩
|
15分 |
例題2
コントロールを使ってウィンドウを表示しよう
(p30-39) |
○WindowsにおいてGUIがなぜ大切か、必要かを説明。
○MFCにおけるGUI部品の種類について。
○ex02.cppの説明 -
(1) イベントドリブン型のプログラムとは
(2) MFCのメッセージ処理方法は
(3) メッセージマップとは
(4) メッセージマップの書き方
(5) メッセージハンドラの書き方
○受講生にex02.cppを入力してもらい動作確認。
|
60分 |
|
休憩
|
60分 |
例題3
ボタンとテキストのコント
ロールで作るウィンドウ
(p39-47) |
○MFCのCButtonで作成できるボタンの種類について。ex03.cppの説明 、CButtonのCreate関数、CButtonCEdit、CStaticのメンバ関数を中心に
○受講生にex03.cppを入力してもらい動作確認。
[応用課題](時間のある受講生に)
<1> ラジオボタン1がONの時、プッシュボタンと同じようにテキストエディットの中身を取り込むようにする
<2> ラジオボタン2がONの時、テキストエディットの中身をクリアする。
|
80分 |
例題4
リストボックスでスクロールさせる
例題5 ミ コンボボックスを作る
(p47-59) |
○ex04.cppの説明 - CListBoxのメンバ関数を中心に
○ex04.cppの説明 ミ コンボボックスの種類、CComboBoxのメンバ関数を中心に
受講生にex04.cpp、ex05.cppを入力してもらい 動作確認。
[応用課題](時間のある受講生に)
<1> CBS_DROPDOWNLISTの場合の確認
1日目終了後、希望者にはフロッピィを配布し、入力したプログラムをコピーしてもらう。
|
85分 |
例題6 ミ 複数の水平スクロールバーを作る
(p59-65) |
_ スクロールバーと他のコントロールの違いについて
_ ex06.cppの説明 ミ
(1) ON_COMMANDとON_WM_HSCROLLの違い
(2) OnHScrollの引数の意味
(3) CScrollBarのメンバ関数
受講生にex06.cppを入力してもらい動作確認。
[応用課題](時間のある受講生に)
適当な位置に垂直スクロールバーを作成する。
|
60分 |
例題7 ミ 読み込んだデータをグラフに表示する
(p66-75) |
○ディスプレィコンテクストとは何か。
○メニューを追加するにはどのようにすればよいか。
○ex07.rcの作成
手順(1) テキストファイルにテキストp71の 内容を入力
手順(2) ex07.rcとして保存
手順(3) プロジェクトへの追加
手順(4) リソースペインでの見方
「ファイルを開く」ダイアログボックスがなぜ 使えるか。
○ ex07.cppの説明 ミ
(5) GetDCとReleaseDC関数
(6) MyPaint(CDC *pDC)におけるpDC
(7) CDCのMoveTo, LineToメンバ関数
(8) OnPaintの内容およびどこで呼び出されるか。
(9) afxdlgs.hの役割
(10) ファイルからのデータ読み込み(Cの復習)
(11) DoModal関数
○受講生にex07.cppを入力してもらい動作確認。
(途中15分間の休憩受講生各自でとってもらう。)
|
80分 |
例題8 ミ ブラシで描く
(p76-81) |
○ GDIオブジェクトとは
○色の作成(RGB)
○ex08.cppの説明
(1) ブラシの作成
(2) FillRectメンバ関数
(3) クライアント領域の取得
(4) クライアント領域の無効化
(5) タイマー (CTimer)
○受講生にex08.cppを入力してもらい動作確認。
|
40分 |
|
休憩
|
60分 |
例題9 ミ ペンを自作する
(p82-84) |
○ex09.cppの説明
(1) CPenのコンストラクタ
(2) CDCのSelectObjectメンバ関数
(3) CDCのEllipseメンバ関数
○受講生にex09.cppを入力してもらい動作確認。
[応用課題](時間のある受講生に)
<1> 他のペンを(破線など)作成
<2> ハッチブラシの作成
|
50分 |
例題12 ミ ビットマップを表示する
(p89-96) |
○例題10、例題11のテキストをみながらの説明。 CFontについて。フォントの扱いは厄介であること。 また、別のパターンを3日目に実習してもらうことを述べて、受講生の確認は行わないこととする。
○ex12.rcの作成
手順(1) リソーススクリプトの新規作成
手順(2) リソースの挿入
手順(3) Bitmap選択
手順(4) 適当な絵を描く
手順(5) ex12.rcとして保存
手順(6) プロジェクトに追加
尚、メモ帳でex12.rc、resource.hの中身を確認してもらう。
○ビットマップオブジェクトを扱うための一連の手順
new ミ LoadBitmap ミ メモリデバイス上への展開 ミ 現在のデバイスへの展開
○ex12.cppの説明
(1) 上記の手順がどこで行われているかの確認
(2) CDCのBitBltメンバ関数
(3) CGdiObjectのGetObjectメンバ関数
○受講生にex12.cppを入力してもらい動作確認。
○ 時間のある受講生にはex11.cppも入力して確認してもらう。
(途中15分間の休憩受講生各自でとってもらう。)
|
100分 |
例題15 ミ ダイアログを作る(リソースの作成、ソース入力のみ) |
_ ex15.rcの作成
手順(1) リソーススクリプトの新規作成
手順(2) リソースの挿入
手順(3) Dialog選択
手順(4) テキストp111の図4-1のダイアログボックス を作成
手順(5) ダイアログのIDを変更 ミ MYDIALOG
手順(6) エディットテキストのIDを変更 ミ 100,101
手順(7) ex15.rcとして保存
手順(8) プロジェクトに追加
_ 受講生にex15a.cppの入力してもらう。
2日目終了。適当なところで入力を終了してくださいと指示。
|
30分 |
例題15 ミ ダイアログを作る(説明) |
_ ダイアログの使い方 ミ クラスの作成、初期化、 表示、終了
_ ex15.cppとex15a.cppの違い
_ ex15a.cppの説明
(1) CPersonの役割
(2) CMyDialogのコンストラクタと親クラスの コンストラクタへの引数の渡し方
(3) OnInitDialogでの処理
(4) OnOKでの処理
(5) OnButtonでの処理
_ ex15a.の動作確認。
|
40分
|
AppWizardの使い方 ミ Hello Worldを左隅に表示する。
(補助テキストp1-p9) |
_ テキストの第2部に進む前に補助資料を用いて 以下のことをマスターすることを伝える。
1. Ver4.0のAppWizardの使い方
2. Ver4.0のClassWizardの使い方
3. メニュー、ツールバーの作り方
4. ダイアログのクラスの作成方法
5. マウスイベントなどに対する処理
_ AppWizardの使い方
_ 作成されるクラスとファイルの確認
_ デバッグモードとリリースモードについて
_ しばらくは表示の処理を行うViewクラス に対してコードを追加していくことを説明
_ TextOut関数の説明
_ なぜ、OnDrawに表示のコードを描くか。 (WM-PAINTメッセージのしくみ)
_ 受講生にコードを追加してもらい動作確認。
|
60分
|
|
休憩
|
15分
|
ClassWizardの使い方1ミ
ダイアログでHelloWorldを表示
(補助テキストp10-p12) |
_ リソースにすでにあるものを確認
_ 新しいダイアログの作成
_ ClassWizardを起動しダイアログボックス のクラスを作成
_ Wizardを使ってもテキストの例題と同じ手順で ダイアログを表示させていることを確認
_ 受講生にコードを追加してもらい動作確認。
|
20分
|
ClassWizardの使い方2ミ
メニューの選択で表示
(補助テキストp13-p16) |
_ メニューエディタを使ってのメニューの作成
_ メニュー選択時のハンドラの作成方法 (OnMenuHelloの作成)
_ InvalidateRectメンバ関数の役割
_ 注意事項としてプログラムを簡単にするために現在 はViewクラスで表示するテキストのCString型の変数を定義していることを説明
_ 受講生にコードを追加してもらい動作確認。
|
15分
|
ClassWizardの使い方3ミマウスイベント、キー入力で表示
(補助テキストp17-p24) |
マウスイベントで発行されるメッセージ について説明
_ Viewクラスにメンバ関数を作る方法
手順(1) 関数の追加
手順(2) コードの編集
_ キーイベントで発行されるメッセージについて説明
_ OnKeyDownで渡される引数の内容について
_ COLORREF型について
_ 受講生にコードを追加してもらい動作確認。
|
30分
|
|
休憩
|
60分
|
ツールバーで表示色を変更
(補助テキストp25-p24) |
_ ツールバーエディタを使ってのツールバーの作成
_ メッセージハンドラの作成
_ 受講生にコードを追加してもらい動作確認。
|
15分
|
ダイアログボックスの文字列をウィンドウに表示
(補助テキストp27-p29) |
_ DDX機能について
_ ダイアログボックスのメンバ変数の作成方法
_ 受講生にコードを追加してもらい動作確認。
|
25分
|
GDIオブジェクトを使って円を表示
(補助テキストp30-p41) |
_ GDIオブジェクトとはなにか。(復習)
_ Ellipse関数で円を描く。
_ OnDrawでペンを変更するパターン、マウスのイベントハンドラ で変更するパターンについて説明
_ ドラッグをしながら円を描く場合のコードの 作成の仕方
_ SetROP2メンバ関数の役割
_ LOGFONT構造体について
_ すべてのパターン、受講生にコードを追加して もらい動作確認。 ただし、フォントは時間のある人のみ。
|
50分
|
|
休憩
|
15分
|
ドキュメント・ビュー構造
(p.142-148)
(補助テキストp45-p49)
|
_ ドキュメント・ビュー構造とは ミ
テキストの図6-3 ミ 図6-8を使って説明
_ 今までのAppWizardを使って作成したクラスを 振り返り、Documentクラスについて説明。
_ OnDrawにすでに描かれている2行(GetDocumentと ASSERT_VALID)について説明。
補助テキストのp45-p49のコードを追加してもらい、 動作確認。
|
50分
|
シリアライズ
(p.130-141)
(補助テキストp50-p52) |
_ シリアライズとは ミ
テキストの図5-1 ミ 図5-5を使って説明
_ CArchiveクラスについて
_ DocumentクラスのSelializeメンバ関数について
_ ar.IsStringでの書き込み、読み込みのわけ方
_ 補助テキストのp50-p52のコードを追加してもらい、 動作確認
|
50分
|
|
「おつかれさまでした。ファイルをコピーしたい方はフロッピーを配布しますので御自身が入力されたファイルをコピーしてください。」
_ 修了書授与
_ 質疑応答
|
|