Vc++1WinApp2

Download Report

Transcript Vc++1WinApp2

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
「は
い」を
押す
「いい
え」
を押す