ビジュアル しー 足す足す

クラスとオブジェクト

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クラス
  CWinApp<クラスからの派生クラス。アプリケーション全体で利用するデータを管理する。
(A)MainFrm.hとMaiFram.cpp:CMainFrameクラス
  CFrameWndクラスからの派生クラス。フレームウィンドウに対する操作を処理する。
(B)testView.hとtestView.cpp
  CViewクラスからの派生クラス。クライアント領域に対する操作を処理する。
(C)testDoc.hとtestDoc.cpp
  CDocumentクラスからの派生クラス。ドキュメントを管理する。
A開発によって生成されるファイル
 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

 新規作成のときプロジェクトを選ぶ。プロジェクトは、MDISDI、ダイアログベースから選ぶ。

戻る

画面に文字を表示する

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;

m_ed1.GetWindowText(ss); //エディットボックス処理関数が使えるコントロールのとき
AGetDlgItem関数
 コントロールにメンバ関数が設定できないとき
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

戻る