windowsapi と mfc h107102 古田雅基 h107048 佐藤一樹 h107124 山下陽平

17
WindowsAPI と MFC H107102 古古古古 H107048 古古 H107124 古古古古

Post on 21-Dec-2015

237 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

WindowsAPIと MFC

H107102     古田雅基H107048     佐藤一樹H107124     山下陽平

Page 2: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

まずはじめに・・・・

WindowsAPIとは? Windows APIは Windowsの各機能にアクセスするためのもの。

特に Cと C++では、 Windows SDKにより、 <windows.h>をはじめとする多数のヘッダファイルが公開されている

多くの開発環境で、 Windows APIを基にしたより高水準のフレームワークが構築されている

これらを通じて、直接・間接にすべてのWindowsアプリケーションはWindows APIを使用している

Page 3: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

もくじ

ウィンドウ作成

ウィンドウ作成のための引数

メッセージループについて

準備するもの

Page 4: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

ウィンドウ作成

ソースコード

main()の代わりに WinMain()

Page 5: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

WinMainで使用する引数

第一引数:インスタンスハンドル アプリケーションの固有の番号

第二引数:インスタンスの確認( Win16) Win32ではこれと異なる方法で確認するため、常に NULL

第三引数:コマンドライン引数 Windows標準の文字型が LPSTR

第四引数:ウィンドウの表示状態

int WINAPI WinMain( HINSTANCE hCurInst, HINSTANCE   hPrevInst,LPSTR lpsCmdLine,int nCmdShow

) ;

Page 6: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

メッセージループ

プログラムに対して何らかの働きかけ(キー入力など)が起こることをイベントと呼ぶ

それぞれのアプリケーションではどのメッセージが送られてきたかを常にチェックしている

イベント発生時 メッセージに対応した処理を実行

ウィンドウプロシージャでイベント待ち受けを行う

これをメッセージループと呼ぶ

Page 7: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

メッセージループの図解Windows

Application

キー入力(イベント)

メッセージ( BM_CLICKED)ウィンドウプロシジャーBM_CLICKED

処理

Page 8: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

ウィンドウハンドル

ウィンドウハンドルとはCreateWindow()の戻り値である。このハンドルを使用することによって、ウィンドウの操作が可能となる。

ハンドルとは、Windowsが管理するためにつける整理番号のようなもの

Page 9: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

準備

Page 10: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

メニューバーの→ →「ファイル 新規作成 プロジェクト」

を押す

Page 11: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

プロジェクトの種類から C++を選びそこの Win32を選択、テンプレートのほうで、 Win32プロジェクトを選択、「ソリューション~」のチェックははずして OK

Page 12: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

Windowsアプリケーションを選択、空のプロジェクトにチェックを入れて、完了を押す

Page 13: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

上図が出るので、右側のソースファイルのところで、右クリック、追加、新しい項目をクリック

Page 14: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

上図のような画面が出るので、コードより、 C++ファイルを選んで、ファイル名を指定して追加のボタンを押せば、ソースをかける場所が出てくる

Page 15: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

課題 課題1:レクチャー中にも出てきたウィンドウを作ってみよう(コピペではなく、手打ちで)

課題2:課題1のプログラムでは、ウィンドウの右上 ×などを押すと直ぐに消えてしまうと思うので、終了前に確認画面( OK、キャンセル)が出るようにする。

課題3:キーイベントを取ってきて、何が押されたのか分かるプログラムを書く

課題4:何か自由にプログラムを書いてみる

Page 16: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

課題2の例

送られてくるメッセージWM_CLOSE

メッセージ BOXの出し方MessageBox(hWnd, _T(" “終了しますか ), _T(" “終了確認 ), MB_OKCANCEL | MB_ICONQUESTION);

Page 17: WindowsAPI と MFC H107102 古田雅基 H107048 佐藤一樹 H107124 山下陽平

Windowsの文字コード

Windowsの文字コードの歴史WindowsNT系 : Unicode環境Windows9x系 :非 Unicode環境

今では全体的に Unicodeに移行されているプログラムを書く上では、 Unicode及び非Unicodeをそれぞれ区別する必要がある

対応策コンパイル時に文字コードを切り替える TCHAR型が存在

更に、 _T()マクロを用いることで文字列も切り替えることが出来る (要: Tchar.h)