1

リセットできる単純なノンブロッキング タイマーを C++ で作成しようとしています。いくつかのコード例を見つけるためにしばらくグーグルで検索しましたが、見つけたものはすべて複雑すぎて理解できないか、追加の非サンプルコードなしではコンパイルできません。

キーの押下をファイルに記録するプログラムがありますが、キーが押されてから 1 秒経過する前に別のキーが押されない限り、このファイルを 1 秒間にわたって書き込む必要があります。

Win32 タイマーを使用する必要があると思いますが (私は Windows を使用しています)、コンパイル可能な単純な使用例が見つかりません。

たとえば、情報ページから取得したこのメソッド:

SetTimer(hwnd,                // handle to main window 
IDT_TIMER1,                   // timer identifier 
1000,                        // 1-second interval 
(TIMERPROC) MyTimerProc);     // no timer callback 


VOID CALLBACK MyTimerProc( 
HWND hwnd,        // handle to window for timer messages 
UINT message,     // WM_TIMER message 
UINT idTimer,     // timer identifier 
DWORD dwTime)     // current system time 
{

// my proceedure code 

FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen("LOG.TXT", "w");
fprintf(OUTPUT_FILE, "%s", "");
fclose(OUTPUT_FILE);

// writes a blank text file.


KillTimer(hwnd, IDT_TIMER1); // stop timer after one call
}

IDT_TIMER1 が定義されていないため、コンパイルされません。

また、これを 2 回呼び出してリセットするのか、1 秒間隔で 2 つの別々の呼び出しを開始するのかはわかりません。

どんな助けでも大歓迎です。

4

4 に答える 4

0

google経由ですばやく見つけることができるハードウェアパフォーマンスタイマーを使用するか、よりクロスプラットフォームが必要な場合は、google経由でも見つけることができるtimegettimeメソッドを使用します。どちらもWin32メッセージループは必要ありません。

于 2012-08-04T00:43:17.647 に答える