web-dev-qa-db-ja.com

MFCダイアログベースのアプリケーションでタイマーを使用する方法

Visual Studio 2008でMFCダイアログベースのアプリケーションを開発しています。アプリケーションの開始時に開始するタイマーを使用して実行を継続し、タスクを実行する関数を呼び出しますか?これどうやってするの?

ありがとう

17
Ali Ahmed

SetTimerメソッドを使用して、タイマーID(任意の数)とミリ秒単位のタイムアウトの2つの引数を渡します。次に、OnTimerの実装と、ON_WM_TIMER内のエントリBEGIN_MESSAGE_MAP...END_MESSAGE_MAPを記述します。

CWnd :: SetTimer は3つのパラメーターを取りますが、必要なパラメーターは2つだけです。 3番目の引数をNULLとして渡します。

CWnd :: OnTimer

25
Ajay
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse,
    void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))

あなたは次のようなことをしたいかもしれません

UINT_PTR myTimer = SetTimer (1, 1000, null); // one event every 1000 ms = 1 s

そして、ウィンドウのイベントハンドラーのON_TIMERイベントに反応します。

void CMyView::OnTimer (UINT_PTR nIdEvent)
{
if (nIdEvent == 1)
    // handle timer event
}

または、タイマーイベントを処理する関数へのポインターを渡すこともできます。タイマーへのハンドルを保持すると、必要に応じて、KillTimer()を使用してタイマーをオフにすることができます。

4
karx11erx

タイマーを使用する基本的な考え方を知りたい場合は、このリンクをご覧になり、タイマーの操作に関する段階的な手順を実行してください。この後、いつでもアプリケーションでタイマーを簡単に使用できるようになります。

リンク: http://www.functionx.com/visualc/controls/timer.htm

お役に立てれば。

乾杯。

1
Neophile