MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
MFCの基礎 - タイマのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
MFCの基礎 - タイマ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == MFCにおいて、タイマのイベントハンドラを作成する手順および簡単なタイマイベントの発生と受付処理を行う手順を記載する。<br> <br><br> == イベントハンドラの追加 == タイマのイベントハンドラを追加するため、クラスウィザードを使用する。<br> <br> [プロジェクト]メニューバー – [クラスウィザード]を選択する。<br> [クラスウィザード]画面の[メッセージ]タブ - [メッセージ]欄から<code>WM_TIMER</code>を選択して、[ハンドラーの追加]ボタンを押下する。<br> <code>OnTimer</code>イベントハンドラが作成される。<br> <br> 以下のように、ヘッダファイルにイベントハンドラの宣言が追記される。<br> <syntaxhighlight lang="c++"> afx_msg void OnTimer(UINT_PTR nIDEvent); </syntaxhighlight> <br> また、ソースファイルにイベントハンドラの実体および必要なMESSAGE_MAPも追記される。<br> <br><br> == サンプルコード == タイマを使用する方法は、以下の通りである。 # タイマを設定する。 # タイマのイベントハンドラが呼び出され、繰り返し処理を実行する。 # タイマの設定を解除する。 <br> <syntaxhighlight lang="c++"> // CSampleDialog.h class CSampleDialog : public CDialogEx { // ... private: // タイマ設定後の識別用ID // タイマの設定を解除する時に必要 UINT m_timerID; // ... } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // CSampleDialog.cpp // ダイアログの初期化のタイミング等でタイマを設定する // 設定後、タイマは有効になる(明示的な開始処理は存在しない) BOOL CSampleDlg::OnInitDialog() { // スーパークラスのメソッドを呼び出す CDialog::OnInitDialog(); // タイマー設定時の識別用ID // 0以外の正整数を設定する // 複数のタイマを設定する場合、一意の値にする必要がある // 戻り値のタイマ設定後の識別用IDと値が異なることがある // そのため、タイマ設定時の識別用IDをタイマ設定後の識別用IDとして使用することはできない UINT timerID = 1; // 繰り返し処理を行う間隔(ミリ秒単位) // 例では5秒間隔にする UINT interval = 5 * 1000; // 繰り返し処理を行うハンドラを指定する // NULLを指定した場合、CWnd::OnTimerハンドラが呼び出される // そのためCWnd::OnTimerハンドラを実装し、繰り返し行う処理を記述する CALLBACK* timerHandler = NULL; // タイマの設定 // タイマが設定できない場合、戻り値は0 m_timerID = SetTimer(timerID, interval, timerHandler); // タイマを設定できない場合 if (m_timerID == 0) { ::AfxMessageBox(_T("タイマを設定できませんでした。")); } } // SetTimerで設定した時間間隔で呼び出される void CSampleDlg::OnTimer(UINT nIDEvent) { // 設定したタイマの場合 if(nIDEvent == m_timerID) { // 繰り返し行う処理を記述する } // スーパークラスのメソッドを呼び出す CDialog::OnTimer(nIDEvent); } // 画面が閉じられる場合等でタイマの設定を解除する void CSampleDlg::OnClose() { // タイマが設定されている場合 if(m_timerID != 0) { // タイマーの設定を解除します。 BOOL err = KillTimer(m_timerID); // タイマーの設定が解除できない場合 if(!err) { ::AfxMessageBox(_T("タイマの設定を解除できませんでした。")); } m_timerID = 0; } // スーパークラスのメソッドを呼び出す CDialog::OnClose(); } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:MFC]]
MFCの基礎 - タイマ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse