Visual C++ Win32 Application Lashkia Lab. Lecture 4th H106013 井戸 悠二 H106044 木町 拓矢 目次 1.VC++とは 2.VC++の特徴 3.VC++を使う上での用語 4.プログラムまでの準備 5.ウィンドウの作成 6.Windouwsアプリケーション 7.課題 1.VC++とは VC++とは Windows ベース、.NET ベースアプリケーションを 開発するためパワフルなツールです。 従来のMS-DOS用のCやC++などのとは全く異な るプログラミングツール プログラミング言語+Windouws流ユーザーイ ンターフェイス開発ツール ⇒ プログラムの組み 立ての効率化 メッセージを受け取り、その関数を実行する メッセージとメッセージ関数の対応の指定 メッセージ関数を記述する 2.VC++の特徴 プログラムの骨格を作成してくれる機能がある (AppWizard) SDI、MDI、ダイアローグベースのアプリケーション の原型が簡単に作成できる。(MFC?) 骨格には基本的なメニューとツールバーが最初から 用意されている。 MFC(Microsoft Foundation Class)というクラスライブ ラリでWindowsアプリケーションを効率よく開発でき る。 固定的なデータはリソースとしてプログラム本体と 分割管理する 3.用語 メッセージ 何かの情報や要求を相手に伝えるための、構造 体やパラメータの集まり 動作(操作)が発生するとOSとアプリケーション間 などでメッセージのやり取りを行う VBでは「イベントドリブン」、VC++では「メッセー ジドリブン」と呼ぶ。 ユーザー OS メッセージ(クリックされた) クリックする メッセージドリブン メッセージを 受け取る相手 3.用語 メッセージ関数 送られてきたメッセージに対応した処理を行う関 数。 メッセージマップ(MFCだけ?) Windowsで発行されたメッセージやコマンドを MFCアプリケーション内のオブジェトにおくる仕組 み。 ユーザー OS “WM_LBUTTONDOWN” 左クリック メッセージドリブン WM_LBUTTONDOWN (メッセージ) OnLButtonDown (メッセージ関数) メッセージマップ MFCアプリ 内のオブ ジェクト 3.用語 リソース スケルトン(骨組み) プログラム内から独立したもの(どういうものか) AppWizardで最初に作られるアプリケーションの原型、これに いろいろ加えることでユーザ独自のアプリケーションに発展さ せる。 コンパイルとビルド コンパイル・・・ファイルを1つ指定し、実行コードに変換 ビルド・・・対応するすべてのファイル見て、修正のあるもの すべてをコンパイルし、全体の再構築を行う。 4.プログラムまでの準備 使用ソフト(統合開発環境) Microsoft Visual Studio 2008 Professional Edition 起動 スタート→すべてのプログラム →ProgrammingLanguage→ Visual Studio 2008 Visual Studio2008 C++を選択 → 新しいプロジェクトを選択 4.プログラムまでの準備 手順 Win32コンソールアプリケー ションを選択 ファイル名を記述 4.プログラムまでの準備 手順(ここからは課題1の手順) Windouwsアプリケーションを選択 空のプロジェクトにチェック ファイル名を記述 4.プログラムまでの準備 手順(ここからは課題1の手順) 画面右にあるソリューションエクス プローラー上で右クリック ↓ 左の様な画面が出るので、追加 の新しい項目を選択(ここからファ イルを作っていく) 4.プログラムまでの準備 手順(ここからは課題1の手順) C++ファイルを選択し、ファイル名を入力 Windouwsアプリケーションを選択 ファイル名を記述 4.プログラムまでの準備 課題1の準備完了!ここにコードを記述 ソースコードの記述が済ん だら、ビルドをして、デバック で実行する。 5.何も用意されてないところからウィ ンドウを作成 ウィンドウを自分たちで作成しよう。 /*********************************************************** * ウィンドウを表示するプログラム ***********************************************************/ #define WIN32_LEAN_AND_MEAN #include <windows.h> #define APP_NAME "FIRSTAPP" #define APP_TITLE "Window Test Application" // ウィンドウプロシージャ関数のプロトタイプ(メッセージの処理) LRESULT CALLBACK WinProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); /*********************************************************** * メイン関数 ***********************************************************/ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd = NULL; WNDCLASSEX wcex; MSG msg; wcex.cbSize = sizeof(wcex); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WinProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wcex.lpszMenuName = NULL; wcex.lpszClassName = APP_NAME; wcex.hIconSm = NULL; if(!RegisterClassEx(&wcex)) { ウィンドウができる。 ④ ① ウィンドウクラスの定義 wndProc(){ システムから受信したメッセージを処理 } 表示、メッセージループ ② CreateWindow を実行 してウィンドウを作成 ③ Windowsシステム 6.使用した関数 WinProc()‥プロシージャのプロトタイプ CreateClassEx()‥ウィンドウを作成 ShowWindow()‥表示状態の設定 UpdateWindow()‥メッセージを送信してウィンドウ内 の描写を行う。 GetMessage()‥メッセージを受信 TranslateMessage()‥ウィンドウ処理が解釈できるよ うにメッセージを変換 DispatchMessage()‥メッセージを指定されたウィンド ウへ送信 6.プロシージャ /*********************************************************** * ウィンドウプロシージャ関数の実体(メッセージの処理) ***********************************************************/ LRESULT CALLBACK WinProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { switch(Msg) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, Msg, wParam, lParam); } return 0L; } 6.プロシージャ メインでwc.lpfnWndProc =(WNDPROC)WndProc; システムからウィンドウに対してメッセージを送信す るためにwindowシステムから呼び出される重要な 関数を指定している。 6.Windowsアプリケーション 手順(課題2の手順) Windouwsアプリケー ションを選択 チェックしない 6.Windowsアプリケーション さっきとちがい基本のプロジェクトは記述 してある。 ←ここにコードを記述する 6.Windowsアプリケーション メッセージボックスを作ってみよう MessageBox 関数を使用。 int MessageBox( HWND hWnd, // ウインドウのハンドル (作成しなければNULL) LPCTSTR lpText, // 表示するテキスト LPCTSTR lpCaption, // タイトル UINT uType // メッセージボックスのスタイル ); MessageBox(NULL ,本文,タイトル,スタイル) MessageBox(NULL ,TEXT(“本文を表示"), TEXT(“test”), MB_OKCANSEL|MB_ICONINFOMATION) 7.課題 課題1 課題2 Win32コンソールアプリケーションの空オブジェク トから、実際に自分ですべて記述して、ウィンドウ を作りなさい。 Win32Windouwsアプリケーションで、MessageBox 関数を用いて、以下のものを作りなさい。 課題3 (余裕がある人は・・・) 自分でいろいろ調べてみて、何でもいいので Windouwsアプリケーションのプログラムを作って みよう。 7.課題 課題1 実行結果 7.課題 課題2 「は い」を 押す 「いい え」 を押す
© Copyright 2024 ExpyDoc