ビジュアル しー 足す足す
クラスとオブジェクト |
Visual C++ 6.0 |
用語 |
○C言語の構造体の機能を大幅に拡張したもの。
○クラスは、クラスを表す固有の値と、クラスがどのような動作をするかという2種類の情報によって表される。
人{
固有の値:
名前:
年齢:
・・・
動作:
ご飯を食べる{体重が増え所持金が減る};
・・・
}
○メンバ変数とメンバ関数
クラスを表す固有の値→メンバ変数
クラスがとる動作を表す→メンバ関数
○オブジェクトの定義
クラス名 オブジェクト名
人 たぬき;
○派生クラスを作る
プログラマ:人{
動作:
プログラムを書く{・・・・};
}
メッセージ |
Visual C++ 6.0 |
用語 |
○関数の間や、モジュール(VCでこう呼ぶかは?)で情報を送ることを「メッセージを送る」というようだ?
○メッセージハンドラ:メッセージを受け取るたびに実行される関数のこと
○メッセージループ:メッセージを受け取り、それを処理し、再びメッセージが送られてくるのを待つという動作
MFC |
Visual C++ 6.0 |
用語 |
○Microsoft Foundation Class
○クラスライブラリ
○内容
ウィンドウスタイル/境界線/最大化ボタンなどのウィンドウの外枠
テキストやグラフィックを表示したりユーザーの操作を受け付けるウィンドウの内部
アプリケーションが管理するデータ
ボタンやエディットボックスなどのコントロール
ブラシやペンなどのGDIオブジェクト
その他
ウィンドウの外枠―フレームウィンドウクラス |
MFC |
Visual C++ 6.0 |
○CFrameWndクラス めったに使わないような?
○CMDIFrameWndクラス
MDIアプリケーションの一番外のフレームウィンドウ(親ウィンドウのフレームウィンドウ)を管理する。
○CMDIChildWndクラス
MDIアプリケーションの子ウィンドウのフレームウィンドウを管理する。
○COIeIPFrameWndクラス
OLE対応アプリケーションを作成するときに使う。
クラスのC |
MFC |
Visual C++ 6.0 |
クラス名の先頭についている“C”は“Class“を意味するもので、MFCのクラス名には必ずついている。
ウィンドウ内部―ビュークラス |
MFC |
Visual C++ 6.0 |
○CViewクラス
Cwndクラスから派生したクラス。ビュークラスが持つ機能の基本的な部分を提供するクラス
○CCtrlView
CViewクラスから派生したクラス。ユーザーが直接使うことはほおとんどなく、つぎの4つのクラスの基底クラスとしてのみ存在する。
○CEditViewクラス
CCtrlViewクラスから派生したクラス。ビューにテキストエディタとしての機能(テキストの編集/文字列検索/カット&ペーストなど)を簡単に待たせることができる。
○CListViewクラス
CCtrlViewクラスから派生したクラス。アイコンを使ったアイテムの一覧を表示することができる。アイテムの表示形式には4つのパターンが用意されている。
○CTreeViewクラス
CCtrlViewクラスから派生したクラス。アイコンを使ったアイテムの一覧を階層構造を持たせて表示することがきる。
○CRichEditViewクラス
CCtrlViewクラスから派生したクラス。CEditViewクラスによく似ているが、機能が高い。
○CScrollViewクラス
CViewクラスから派生したクラス。CViewクラスにスクロール機能を追加したもの。
○CFormViewクラス
CScrollViewクラスから派生したクラス。ビューにボタンやエディットボックスなどを利用したユーザーインターフェイスを構築するのに使う。
○CDaoRecordViewクラス
CFormViewクラスから派生したクラス。DAOデータベースのレコードを表示するために使う。
○CRecordViewクラス
CFormViewクラスから派生したクラス。ODBCデータベースのレコードを表示するために使う。
○CHtmlViewクラス
HTMLファイルを解釈/表示することができる。
○COleDBrecordViewクラス
CFormViewクラスから派生したクラス。OLE DBを使用して、データベースにアクセスする場合に使用する。
GDIオブジェクト |
MFC |
Visual C++ 6.0 |
GDIオブジェクトはデバイスコンテキストに描く図形データなどを管理するために使われる。
○CGdiObjectクラス
CObjectクラスの派生クラス。GDIオブジェクトとしての基本的な機能を提供する。
○CPenクラス
○CBrushクラス
○CBitmapクラス
○CFontクラス
○CPalettクラス
○CRgnクラス
コントロールとダイアログボックス |
MFC |
Visual C++ 6.0 |
○CDialogクラス
ダイアログボックスを扱うための関数を提供する。
○CButtnクラス、CBitmapButtonクラス
○CEditクラス
○ClistBoxクラス
○CComboBoxクラス、CConboBoxExクラス
○CStaticクラス
○CAnimateCtrlクラス
○CListCtrlクラス、CTreeCtrlクラス
○CProgressCtrlクラス
○CRichEditCtrlクラス
○CSliderCtrlクラス
○CToolTipCtrlクラス
○CDateTimeCtrlクラス
○CReBarクラス
○CMonthCalCtrlクラス
その他のクラス
コントロールの種類 | Visual C++ 6.0 |
@ポインタ
Aピクチャ
Bスタティックテキスト
Cエディットボックス
Dグループボックス
Eプッシュボタン
Fチェックボックス
Gラジオボタン
Hコンボボックス
Iリストボックス
J水平スクロール
K垂直スクロール
Lスピンボタン
Mプログレスバー
Nスライダ
Oホットキー
Pリストビュー
Qツリービュー
Rタブコントロール
Sアニメート
21リッチエディットコントロール
22日時指定
23月間予定表
24IPアドレス
25カスタムコントロール
26拡張コンボボックス
アプリケーションが管理するデータ |
MFC |
Visual C++ 6.0 |
メモリ上にロードされて現在使用しているデータと、ハードディスクなどの外部記憶装置に保存されているデータの管理。
○CDocumentクラス
CCmdTargetクラスから派生したクラス。アプリケーションが使用するデータを管理するクラス。ビュークラスとも深い関係にある。CArchiveクラスのオブジェクトを解してデータをメモリと二次記憶に保存されたファイルとの間でやり取りすることもできる。
○CArchiveクラス
CDocumentクラスが管理するデータとファイルの間の入出力を行う際に利用する。
○CFileクラス
CObjectから派生した、ファイルを扱うクラス。CArchiveクラスも内部的にはCFileクラスのオブジェクトを利用してドキュメントとファイル間のやり取りを行っている。
CObjectクラス |
MFC |
Visual C++ 6.0 |
MFCの根本に存在するクラス。MFCが提供するクラスの多くはこのクラスから派生したもの。このクラスは「シリアラジズ」、「ランタイムクラス情報の取得」、「オブジェクトの診断」などの機能を提供する。
CCmdTargetクラス |
MFC |
Visual C++ 6.0 |
メッセージを処理することができるクラスは、すべてCCmdTargetクラスの派生クラス。
CWndクラス |
MFC |
Visual C++ 6.0 |
CCmdTargetクラスから派生したクラス。画面に表示される多くのウィンドウの基本機能を提供する。
CDCクラス |
MFC |
Visual C++ 6.0 |
Windowsアプリケーションの出力は基本的にはすべてデバイスコンテキスト(DC)というものに対して送られる。DCを扱うためのクラスがこのCDCクラス。文字を出力したり、図形を描いたりといった作業はすべてこのクラスのオブジェクトを対象に行われる。
CWinAppクラス |
MFC |
Visual C++ 6.0 |
アプリケーションの実行に必要な初期化/ドキュメントテンプレートの管理などを行うクラス。MFCを利用するすべてのアプリケーションが、このクラスの派生クラスを1つだけ必要とする。
プログラムの基本構成 | Visual C++ 6.0 |
@アプリケーションクラス
CWinAppクラス
Aフレームウィンドウクラス
CFrameWndクラス、CMDIFrameWndクラスなど
Bビュークラス
CViewクラス、CEditViewクラスなど
Cドキュメントクラス
CDocumentクラス、CFileクラスなど
○MFCを使ったプログラムの基本構成例参照
MFCを使ったプログラムの基本構成例 |
MFC |
Visual C++6.0 |
例]プロジェクト名test。ウィンドウ構成(SDI、ツールバーなし、ステータスバーなし)
@ファイル群
ヘッダファイルに対応する実装ファイルにクラスのメンバ関数の定義を記述する。ここでは、4つのヘッダファイルに対応する4つの実装ファイルがある。
ヘッダファイル 実装ファイル test.h test.cpp MainFrm.h MaiFram.cpp testView.h testView.cpp testDoc.h testDoc.cpp (i)test.hとtest.cpp:CtestAppクラスA開発によって生成されるファイル
CWinApp<クラスからの派生クラス。アプリケーション全体で利用するデータを管理する。
(A)MainFrm.hとMaiFram.cpp:CMainFrameクラス
CFrameWndクラスからの派生クラス。フレームウィンドウに対する操作を処理する。
(B)testView.hとtestView.cpp
CViewクラスからの派生クラス。クライアント領域に対する操作を処理する。
(C)testDoc.hとtestDoc.cpp
CDocumentクラスからの派生クラス。ドキュメントを管理する。
test.asp(リソースID定義ファイル)
test.clw(ClassWizard用作業ファイル)
StdAfx.cpp(プリコンパイルヘッダ用ソースファイル)
StadAfx.h(めったにへんこうされないインクルードファイルをしてするとビルド時間が短縮される。プリコンパイルヘッダ用ヘッダファイル)
test.dsw(プロジェクトを開くとき指定する。Developer Studio Workspaceファイル)
test.dsp(ビルド手順が記述されている。Developer Studio Projectファイル)
test.opt(ワークスペースオプションファイル)
resorce.h(リソースインクルードファイル。test.rc<から参照されるインクルードファイル)
test.plg(ビルド結果ファイル)
test.rc(リソースファイル。プロジェクトで使用されるすべてのリソースが定義される。)
ほとんどのファイルは、Developer Studioによって編集される。プログラマが直接編集するのは、tadAfx.h。このヘッダは、プリコンパイルヘッダ機能(一度コンパイルすると二回目からはコンパイルしなくてよい)を利用したいヘッダファイルをここへ登録しておく。
C++のヘッダファイル |
Visual C++ 6.0 |
C言語のヘッダファイルは、関数のプロトタイプ宣言や構造体の定義などを記述します。C++言語はそれに加えて、クラスの定義もヘッダファイルに記述します。
MFC AppWizard |
Visual C++ 6.0 |
Visual C++ 6.0 |
新規作成のときプロジェクトを選ぶ。プロジェクトは、MDI、SDI、ダイアログベースから選ぶ。
画面に文字を表示する |
Visual C++ 6.0 |
@ワークスペースウィンドウ(VC++の編集画面の左の窓)から
Classタブを選ぶ(or fileViewを選ぶ)
Aプロジェクト名のついたViewクラス(or プロジェクト名のついたViewソースファイル)の中の
OnDraw関数
に // TODO: この場所にネイティブ データ用の描画コードを追加します。
という表示がされている。その下に
pDC->TextOut(0,0,"こんにちは!");
プロジェクト名がhellのとき
void CHellView::OnDraw(CDC* pDC)
{
CHellDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
pDC->TextOut(0,0,"こんにちは!");
}
ビルドによって作られるファイルの構成を見る |
Visual C++ 6.0 |
FileViewにできている
ReadMe.txt
を見る
コメント |
C++ |
"//"を行頭につける。
(C言語は"/*"と"*/"で文をくくる。)
(HTMLタグは"<!--"と"--!>"で文をくくる。)
ウィンドウの大きさを変える |
Visual C++ 6.0 |
@ワークスペースウィンドウ(VC++の編集画面の左の窓)から
Classタブを選ぶ
ACMainFrmクラスの中の
PreCreateWindowメンバ関数の
cs.cx=; cs.cy=
の値を変更する。
プロジェクト名がhellのとき
BOOL CMainFrm::PreCreateWindow(CREATESTRUCT& cs)
{
if(!CFrameWnd::PreCreateWindow(cs))
returan FALSE;
// TODO: この位置でCREATESTRUCT csを修正して、Windowクラスやスタイルを
// 修正してください。
//
cs.cx = 300; cs.cy = 200; //ウィンドウの横幅、縦幅を決める
//
return TRUE;
} }
メンバ関数を書く | ClassWizard | Visual C++ 6.0 |
@[表示(V)] → [ClassWizard(W)]
AClassWizardが起動する。
B関数を書き込むクラスを選ぶ。
Cコードを書く。(画面に文字を表示する参照)
エディットボックスへアクセスするには | ClassWizard | Visual C++ 6.0 |
コントロールにメンバ変数を設定する。このとき
カテゴリ→コントロール
にすることを忘れないように!(カテゴリのデフォルトは、「値」になっている)
@ダイアログへエディットボックスを配置する。
Aエディットボックスが選択されているなら右クリックでClassWizardを選ぶ
Bメンバ変数を選ぶ。
C変数の追加を選ぶ。
Dメンバ変数名を入力し、カテゴリを「コントロール」にする。変数のタイプは、自動的に"CEdit"になっている。
コントロールへアクセスする | Visual C++ 6.0 |
@エディットボックス処理関数
コントロールにメンバ関数が設定できるとき
CString ss;AGetDlgItem関数
m_ed1.GetWindowText(ss); //エディットボックス処理関数が使えるコントロールのとき
コントロールにメンバ関数が設定できないとき
CString ss;
CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1);
myED1->GetWindowText(ss);
ビルドとリビルド | Visual C++ 6.0 |
ビルドは、clwファイルの内容を維持し、前回のプログラム構造を維持して、クラスを1つずつコンパイルする。
リビルドは、clwファイルを削除して、最初から全ファイルをコンパイルする。
ショートカットキーを変更する | Visual C++ 6.0 | アクセラレータキー |
できるようだが、現状では不要。 標準
Ctrl+O ファイルを開く
Ctrl+C
Ctrl+V
Ctrl+X
リソースの追加 | Visual C++ 6.0 |
@挿入→リソース
Visual C++ 6.0 |