Windowsアプリケーションプログラミング

Windowsアプリケーション
プログラミング
生命・情報等教育研究支援室
(電子・情報工学系)
中山 勝
プロセッサの設計と開発の実験装置群
実験装置全体の構成
Windowsアプリケーションの
基本構成
アプリケーションの動作の流れ
メッセージ処理関数
ユーザーの操作
マウスやキーボードのイベント
メッセージ
メッセージ
アプリケーションの
WinMain関数
WindowsOS
WinMain関数
Int APIENTRY WinMain(
HINSTANCE hInstance, //プログラムの実体のハンドル
HINSTANCE hPrevInstance, //Win32では常にNULL
LPSTR
lpCmdLine, //コマンドラインのポインタ
int
nCmdShow) //起動時のウインドウの状態
{
必要な全ての初期化作業及びメインウインドウの作成
送られてきたメッセージを取り出し、処理関数に渡す
終了処理
}
WinMain関数内の処理
初期化
ウインドウクラスの登録
WNDCLASS構造体に値を
セットしRegisterClass関数
で登録
メインウインドウの作成
CreateWindow関数で作成
メインウインドウの表示
ShowWindow関数で表示
メッセージの取得
メッセージ処理関数
に渡す
メッセージ処理ループ
NO
終了メッセージか?
YES
終了処理
アプリケーションの動作の流れ
メッセージ処理関数
ユーザーの操作
マウスやキーボードのイベント
メッセージ
メッセージ
アプリケーションの
WinMain関数
WindowsOS
代表的なメッセージ
WM_CREATE(ウィンドウが作られるときに発生)
WM_COMMAND(メニューが選択されたり、ボタンが押さ
れたりしたときに発生)
WM_SIZE(ウィンドウのサイズが変更されたときに発生)
WM_CLOSE(閉じるボタンが押されたときに発生 )
WM_DESTROY(ウィンドウが破棄されたときに発生 )
WM_PAINT(ウィンドウ内の表示データに、再描画の必要
があるときに発生)
メッセージ処理関数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam){
switch(message){
・
・
case WM_DESTROY:
PostQuitMessage(0);/*終了メッセージの発行*/
break;
default:
return(DefWindowProc(hWnd,message,wParam,lParam));
}
return(0L);
}
アプリケーションの処理
(実機でのデモンストレーション)
アプリケーションの開発
(シリアル通信関連)
シリアルポートの監視(1)
WinMain関数
メッセージ処理
メッセージ
イベント
WindowsOS
ユーザーの操作
メッセージ
タイマーセット
Run又はStopボタン
の処理
タイマー破棄
タイマーの処理
メッセージ処理関数
Stopコマンド
1秒毎に監視
シリアルポート
シリアルポートの監視(2)
WinMain関数
メッセージ処理
メッセージ
イベント
WindowsOS
ユーザーの操作
メッセージ
スレッドの起動
Run又はStopボタン
の処理
メッセージ処理関数
Stopコマンド
シリアルポート
シリアルポート監視スレッド
連続監視
シリアルポートの送受信
START
オーバーラップ
ポートのオープン
構造体を定義 オーバーラップでのポートのオープン
その他の処理
スレッド起動
Stop応答
受信待ち
スレッド起動
Run/Stop?
No
Yes
Stop
Stopコマンド発行
Stop応答
オーバーラップ構造体の
受信待ち
イベント待ち
Run or Stop
Run
Runコマンド発行
ボタン表示切替
ポート監視スレッド起動
ボタン表示切替
Stop処理
スレッド終了
むすび
今回発表のアプリケーションは、C言語と
API(Application Programming Interface)関数で記
述されている。
VC++には、アプリケーション開発のため
MFC(Microsoft Foundation Class)というクラス
ライブラリが提供されている。これについて
は、また次の機会に。