Presentation is loading. Please wait.

Presentation is loading. Please wait.

Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.

Similar presentations


Presentation on theme: "Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平."— Presentation transcript:

1 Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平

2 目次 MFCとは MFCの利点と欠点 MFCでプログラミング AppWizard コントロール イベントハンドラ

3 MFCとは Microsoft Foundation Class VisualC++に付属するクラスライブラリ
Windowsアプリケーションの作成に有用なクラスを提供している

4 MFCの利点 Win32API MFCはWindowsAPIをC++でラッピングして 使いやすくした
WindowsOS Win32API MFC Application Win32API MFCはWindowsAPIをC++でラッピングして                     使いやすくした

5 MFCの欠点 互換性 肥大化 利用時の問題 MFCを使えば、使っただけWindowsOSに依存 ライブラリを組み込むためファイル要領の肥大化
内部的には結局Win32API MFCが用意していない部分もある

6 AppWizard App (Application) Wizardとは スケルトンを作成するためのツール スケルトンとは
アプリケーションの骨組み AppWizard にて 「ダイアログ ベース」に設定すると 左の状態まで自動作成してくれる。

7 AppWizard 新しいプロジェクト プロジェクトの種類 : Visual C++ テンプレート : MFC アプリケーション
プロジェクト名 : 任意のもの

8 AppWizard アプリケーションの種類

9 AppWizard スケルトン完成

10 コントロールの配置 コントロールの配置 リソース ビューにて配置を行うダイアログを選択 ダイアログエディタからコントロールをフォームに配置
今回の場合は Dialog ディレクトリ内の 「IDD_SAMPLELECTURE_DIALOG」を ダブルクリックして開く ※ 削除方法   配置されたコントロールを選択して      Deleteキー(プログラム的には消えないときも) ドラッグ&ドロップ or ダブルクリックで配置

11 コントロールのプロパティ プロパティの設定 ID : 各コントロールを区別するための管理名 ※ 各コントロールによって
プロパティの内容は違う (ちなみにこれはボタン1のプロパティ) ※ ダイアログ自身も プロパティを設定する事が可能

12 イベント ハンドラ イベント ハンドラを追加するには コントロールを選択して、右クリック
ポップアップメニューから「イベント ハンドラの追加」 プロパティウィンドウの 「管理イベント」からも設定可能

13 イベント ハンドラ イベント ハンドラ ウィザードを用いる メッセージの種類を選ぶ ButtonControlに対して
クリックした際の処理がしたい場合は 「BN_CLICKED」を選択 設定が終わったら 「追加して編集(A)」をクリック void Cmfc_testDlg::OnBnClickedBtn() { // TODO: ここにコントロール通知ハンドラコードを追加します。 } 自動的に右記のコードが 生成される

14 メンバ変数 Edit Contorol にメンバ変数を設定 カテゴリ : Value 変数の種類 : CString
変数名 : text1 (任意) カテゴリは2種類 ・Control 型 ・Value 型 コントロールの状態を 変数で扱う場合は Value型 コントロールを関数を通して 操作したい場合は Control型

15 ダイアログのデータを更新1 DDX (Dialog Data eXchange ) を用いる その名の通り、ダイアログのデータを入れ替える
命令は UpdateData という関数 メンバ変数 → ダイアログ : UpdateData (FALSE); ダイアログ → メンバ変数 : UpdateData (TRUE); void CMFCDlg :: OnBnClickButton1 () { // TODO : ここにコントロール通知ハンドラ コードを追加します。 UpdateData (TRUE); // ダイアログのデータを読み出し text2 = text1; // text1 の内容を text2 にコピー UpdateData (FALSE); // メンバ変数の内容をダイアログに書き出す } // text1, text2 は Edit Control に設定されたメンバ変数(カテゴリ:Value, CString) DDX(dialog data exchange)とは、ダイアログ上のコントロールの初期化と、コントロールとのデータのやりとりを単純化するための仕組みです。 ここで言う「コントロールの初期化」とは、コントロールのサブクラス化や、ウィンドウハンドルをコントロールクラスに設定することを意味します。また、「コントロールとのデータのやりとり」とは、指定した変数の値をコントロールに設定したり、逆にコントロールから取得した値を指定した変数に代入することを意味します。

16 ダイアログのデータを更新2 DDXを使わない方法 プログラム内にてコントロールを取得する
CString strMsg; // 各コントロールを取得 CEdit* text1 = (CEdit*)GetDlgItem(IDC_EDIT1); CEdit* text2 = (CEdit*)GetDlgItem(IDC_EDIT2); text1->GetWindowText(strMsg); // 値を取得 text2->SetWindowText(strMsg); // 値を設定 プログラムの規模が大きくなってくると、より複雑になっていく・・・ そんな時にDDXを使う事で各コントロールを楽に管理出来る MFCを有効活用するのであればDDXは利用すべき

17 課題1 エディットボックスの内容をコピー 利用するコントロール Button Control 1個 Edit Control 2個
コントロールID メンバ タイプ メッセージ IDC_EDIT1 text1 CString - IDC_EDIT2 text2 IDC_BTN BN_CLICKED IDC_EDIT1 に入力された値を IDC_BTN が押されたら IDC_EDIT2 にコピーするプログラム

18 課題2 簡単な計算機をつくろう このようなフィールドを作って、四則演算ができるようにしよう

19 課題3 課題3は自由課題となるので、何か自由にプログラムしてみよう 参考URL


Download ppt "Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平."

Similar presentations


Ads by Google