VC++中不占CPU的延时方法:
<code>int</code> <code>CtestThreadDlg::DelayTime(</code><code>int</code> <code>m)</code><code>//参数为延时秒数</code>
<code>{</code>
<code> </code><code>HANDLE</code> <code>hTimer = NULL;</code>
<code> </code><code>HANDLE</code> <code>hT[2];</code>
<code> </code><code>LARGE_INTEGER liDueTime;</code>
<code> </code><code>liDueTime.QuadPart = m *(-100000000) / 10;</code>
<code> </code><code>hTimer = CreateWaitableTimer(NULL, TRUE, _T(</code><code>"theTimer"</code><code>));</code>
<code> </code><code>hT[0] = hTimer;</code>
<code> </code><code>if</code> <code>(!hTimer)</code>
<code> </code><code>{</code>
<code> </code><code>return</code> <code>1;</code>
<code> </code><code>}</code>
<code> </code><code>if</code> <code>(!SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, FALSE))</code>
<code> </code><code>CloseHandle(hTimer);</code>
<code> </code><code>return</code> <code>2;</code>
<code> </code><code>DWORD</code> <code>lBusy;</code>
<code> </code><code>do</code>
<code> </code><code>lBusy = MsgWaitForMultipleObjects(1, hT, FALSE, 0xffff, QS_ALLINPUT);</code>
<code> </code><code>const</code> <code>MSG msg;</code>
<code> </code><code>GetMessage((LPMSG) &msg, NULL, 0, 0);</code>
<code> </code><code>DispatchMessage(&msg);</code>
<code> </code><code>} </code><code>while</code> <code>(lBusy == (WAIT_OBJECT_0 + 1));</code>
<code> </code><code>CloseHandle(hTimer);</code>
<code> </code><code>return</code> <code>0;</code>
<code>}</code>
<code></code>
本文转自Chinayu201451CTO博客,原文链接: http://blog.51cto.com/9233403/1975206,如需转载请自行联系原作者