
GetTickCount( )
インターバルタイマーとして設定する方法のコードを次に示します。
まず時間をとって、
StartTime = GetTickCount( )
次に、別のタイマーを追加します
EndTime = GetTickCount( )
StartTime から EndTime を引きます。
DeltaTime = EndTime - StartTime
そして、 と比較DeltaTime
しEveryMillisecondTask
ます。結果が の場合、true
設定した switch ステートメントの数値に対応する乱数を生成し、次に を呼び出しますGCChatTargetSend( )
。
if ( DeltaTime >= EveryMillisecondTask ){
int x = rand() % 4;
switch(x){
// do stuff
}
}
の完全なコード リストは 次のGetTickCount( )
とおりです。
#include <time.h>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
void GCChatTargetSend( string message );
int main() {
int EveryMillisecondTask=1000; // 1 second = 1000 milliseconds
int StartTime = GetTickCount();
srand (time(NULL));
cout<<"Welcome to GetTickCount() interval timer \n \n";
cout<<"Interval set to "<< EveryMillisecondTask <<" milliseconds \n";
while( true ){
int EndTime = GetTickCount();
int DeltaTime = EndTime - StartTime;
// test to see if EveryMillisecondTask matches time
if ( DeltaTime >= EveryMillisecondTask ){
// generate random number
int x = rand() % 4;
cout<<"\nRandom X= "<< x+1 <<"\n";
// switch x
switch(x){
case 0:
GCChatTargetSend("String message 1 Here ");
break;
case 1:
GCChatTargetSend("String message 2 Here ");
break;
case 2:
GCChatTargetSend("String message 3 Here ");
break;
case 3:
GCChatTargetSend("String message 4 Here ");
break;
default:
break;
}
// reset time
StartTime = GetTickCount();
EndTime = GetTickCount();
}
}//while
return 0;
}
void GCChatTargetSend( string message ){
cout<<message<<" \n";
}
settimer( )
Windows独自の機能を使用してインターバルタイマーを実行する方法は次のとおりです。
https://msdn.microsoft.com/en-us/library/windows/desktop/ms644906(v=vs.85).aspx
のサンプル コードsettimer( )
:
#define STRICT 1
#include <windows.h>
#include <iostream.h>
VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime);
int main(int argc, char *argv[], char *envp[]){
int Counter=0;
MSG Msg;
int timeInMilliseconds = 2000;
cout<<"Welcome to SetTimer( ) interval timer \n \n";
cout<<"Interval set to "<< timeInMilliseconds <<" milliseconds \n\n\n";
UINT TimerId = SetTimer(NULL, 0, timeInMilliseconds, &TimerProc); //2000 milliseconds
cout << "TimerId: " << TimerId << '\n';
if (!TimerId) return 16;
while (GetMessage(&Msg, NULL, 0, 0)){
++Counter;
if (Msg.message == WM_TIMER) cout << "Counter: " << Counter << "; timer message\n";
else
cout << "Counter: " << Counter << "; message: " << Msg.message << '\n';
DispatchMessage(&Msg);
}
KillTimer(NULL, TimerId);
return 0;
}
VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime){
cout << "CALLBACK " << dwTime << " \n\n";
cout.flush();
}