※TIMER:の横にある「*」はスタティックテキストです。IDはIDC_TIMERとします ※ボタンを画像の様に3つ作成。 サンプルではIDを左からIDC_START、IDC_STOP、IDC_RESETとします
※ClassViewのダイヤログクラスを右クリックし、int型のメンバー変数 m_TimeData を作成
※メッセージWM_TIMERを追加 ※作成した3つのボタンのクリックイベントも追加する ※IDC_START → BN_CLICKED → 関数追加 ※IDC_STOP → BN_CLICKED → 関数追加 ※IDC_RESET → BN_CLICKED → 関数追加
//////////////////////////////////////// // CTest03Dlg メッセージ ハンドラ BOOL CTest03Dlg::OnInitDialog() { CDialog::OnInitDialog(); // "バージョン情報..." メニュー項目をシステム メニューへ追加します。 // IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン // ウィンドウがダイアログでない時は自動的に設定しません。 SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定 SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定 // TODO: 特別な初期化を行う時はこの場所に追加してください。 //■メンバー変数の初期化 m_TimeData = 0; return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。 } ※メンバー変数の初期化と、タイマーを動作させる為の初期設定をする。
CDialog::OnInitDialog(); // "バージョン情報..." メニュー項目をシステム メニューへ追加します。 // IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン // ウィンドウがダイアログでない時は自動的に設定しません。 SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定 SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定 // TODO: 特別な初期化を行う時はこの場所に追加してください。 //■メンバー変数の初期化 m_TimeData = 0; return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); }
pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
void CTest03Dlg::OnTimer(UINT nIDEvent) { // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください //int変数の有効範囲のチェック if(m_TimeData < 32767){ //m_TimeDataのインクリメント m_TimeData++; //CString型変数iを作成 CString i; //intからCStringにキャスト i.Format("%d", m_TimeData); //ダイヤログ更新 GetDlgItem(IDC_TIMER)->SetWindowText(i); } CDialog::OnTimer(nIDEvent); } ※メンバー変数の有効範囲をチェックし有効範囲内なら1を足しダイヤログを更新
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください //int変数の有効範囲のチェック if(m_TimeData < 32767){ //m_TimeDataのインクリメント m_TimeData++; //CString型変数iを作成 CString i; //intからCStringにキャスト i.Format("%d", m_TimeData); //ダイヤログ更新 GetDlgItem(IDC_TIMER)->SetWindowText(i);
//m_TimeDataのインクリメント m_TimeData++; //CString型変数iを作成 CString i; //intからCStringにキャスト i.Format("%d", m_TimeData); //ダイヤログ更新 GetDlgItem(IDC_TIMER)->SetWindowText(i);
//★スタートボタンのクリックイベント void CTest03Dlg::OnStart() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください //タイマーの設定 //※最初の引数 :1=タイマーID //※2番目の引数:1000=1000ミリ秒=1秒 //※3番目の引数:長くなるのでMSDN等で調べてください。(^^; SetTimer(1,1000,NULL); } //★ストップボタンのクリックイベント void CTest03Dlg::OnStop() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください //タイマー止める ※引数はタイマーID KillTimer(1); } //★リセットボタンのクリックイベント void CTest03Dlg::OnReset() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください //タイマーデータを初期値0に戻す m_TimeData = 0; //CString型変数iを作成 CString i; //int→CString i.Format("%d", m_TimeData); //ダイヤログ更新 GetDlgItem(IDC_TIMER)->SetWindowText(i); } ※SetTimer関数はタイマーを動作させる為の関数、引数はコメント文参照 ※KillTimer関数はタイマーを殺す為の関数、引数はタイマーID
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください //タイマーの設定 //※最初の引数 :1=タイマーID //※2番目の引数:1000=1000ミリ秒=1秒 //※3番目の引数:長くなるのでMSDN等で調べてください。(^^; SetTimer(1,1000,NULL);
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください //タイマー止める ※引数はタイマーID KillTimer(1);
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください //タイマーデータを初期値0に戻す m_TimeData = 0; //CString型変数iを作成 CString i; //int→CString i.Format("%d", m_TimeData); //ダイヤログ更新 GetDlgItem(IDC_TIMER)->SetWindowText(i);
※STARTボタンでタイマー開始、STOPボタンで一時停止、RESETボタンでタイマー値クリア