2013-11-25 3 views
0

Я написал код в OnTimer(), который называется каждые 100 мс, и дайте мне время, приложение простаивают здесь кодGetLastInputInfo() дает правильное время

void MyAppView::OnTimer(UINT_PTR nIDEvent) 
{ 
// TODO: Add your message handler code here and/or call default 
if(nIDEvent == 3) 
{ 
    // Get the last input event info. 
    LASTINPUTINFO li; 
    li.cbSize = sizeof(LASTINPUTINFO); 
    ::GetLastInputInfo(&li); 
    // Calculate the time elapsed in seconds. 
    DWORD te = ::GetTickCount(); 
    int elapsed = (te - li.dwTime)/100; 
    // Test against a preset timeout period in 
    // seconds. 
    if(5000 < elapsed) 
    { 
     // Call a function or set an application flag 
     // that can be acted on outside this function. 
     AfxMessageBox(_T("This session has timeout")); 
    } 
    } 
} 

Я не знаю, Что в этом коде не так, но я получаю истекшее = 0 каждый раз. Пожалуйста, дайте мне знать, где я иду не так. Спасибо заранее.

+0

Вы уверены, что полная система не получал вход в 500 секунд? GetLastInputInfo является системным! – xMRi

+0

Когда вы выполняете этот код в отладчике, вы будете производить ввод, сбросив счетчик простоя. Попробуйте установить точку [tracepoint] (http://msdn.microsoft.com/en-us/library/232dxah7 (v = vs.90) .aspx) вместо точки останова. В коде нет ничего очевидного. – IInspectable

ответ

0

Я думаю, что вы хотите расчет поплавок, не целое ...

float elapsed = (te - li.dwTime)/100.0; 
+0

-1 Это ничего не меняет. Это дает вам дополнительную точность, где вам это не нужно. ОП хочет знать, превышает ли прошедшее время - выраженное через 0,1 с - больше 500 с. Усекаете ли вы во время деления или сравниваете с четным целым, не имеет значения. – IInspectable

+0

@Инспективный Нет, Op хотел знать, ПОЧЕМУ он получает 0 каждый раз ... –

+0

Справа. И я дал один ответ. Ваше предположение подразумевает, что в течение последних 0.1 секунд был введен вход. OP заинтересован в тайм-ауте сессии после 500 секунд. Ему серьезно не важно, получает ли он 0, 0.00001423876, 142.4548765 или другое значение. Ему не нужны фракции. – IInspectable

Смежные вопросы