您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9264|回复: 0
打印 上一主题 下一主题

[C++学习资料] 非滞后式延迟执行

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
5 p8 |: U; Z. f建立 xsleep.cpp和xsleep.p文件
: R1 R( w! A+ e+ i5 ixsleep.cpp文件代码如下
0 E, n) \! |7 T- V/ h% K
  1. //Download by http://www.cncml.com
    . G/ s0 a- A0 }+ a* X
  2. #include <windows.h>
    - |$ ]! }" D) {) R, w" A- V2 \' H
  3. #include <stdafx.h>1 p( U( o8 [: u. R
  4. ' f; L' W  V+ I2 z- n& S* X
  5. // This structure is used internally by the XSleep function
    9 v' i) F1 H4 o1 F- f* p0 q# S
  6. struct XSleep_Structure  i% z7 h2 H) A4 v$ ]3 X
  7. {) _& r1 K* C4 A' i- H' m+ X
  8.         int duration;
    # l7 @/ y% B# D& U5 M# W# D" C# g
  9.         HANDLE eventHandle;* ]5 v: T% `- x4 u: _
  10. };8 s( H% w2 C- x2 H6 N& }' f

  11. 3 ]/ f+ }9 h% s# Z: W

  12. 4 c& z  d  A4 @7 q0 @+ p
  13. //////////////////////////////////////////////////////////////////////: P2 X; Z; a. S
  14. // Function  : XSleepThread()  ~1 c& S% Z) g
  15. // Purpose   : The thread which will sleep for the given duration
    # B1 @! [2 @6 x- b9 {
  16. // Returns   : DWORD WINAPI# [# Y8 _8 y2 o; ~/ o
  17. // Parameters:      
    6 l. m9 @0 M8 E% J
  18. //  1. pWaitTime -
    . s9 H4 O5 W3 |
  19. //////////////////////////////////////////////////////////////////////- y" j- S* I5 y6 @/ [1 J. G6 V
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    + I' f- A) i5 F$ j  L" R) H( o
  21. {
    % a1 Q4 k6 o% `- o
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    / Z5 J0 |4 G* P( \% J4 D

  23. 4 k% t: F; Z/ M% O0 }% N# V. K  Q
  24.         Sleep(sleep->duration);
      I2 o/ Z( B* _" v2 m" }2 o
  25.         SetEvent(sleep->eventHandle);
    ! b" y6 u! T0 X: C& I, J) S

  26. * I! O8 z& K8 t- k; A# x! K' A
  27.         return 0;6 Q) i! d- g) D' `
  28. }
    ! X# r; c/ i% H8 Z
  29. ) S+ G7 e% N4 F8 y$ O
  30. //////////////////////////////////////////////////////////////////////! p2 Z( A% G0 ]0 g3 [
  31. // Function  : XSleep()
    9 z5 l- Y  u' Z& u& V8 ^+ A, C# N
  32. // Purpose   : To make the application sleep for the specified time" N) @5 c' q( I1 ~+ |
  33. //             duration.$ u0 q. ~( I& r" X+ W6 u
  34. //             Duration the entire time duration XSleep sleeps, it$ y, a, e$ q5 [/ @& S6 ~6 w
  35. //             keeps processing the message pump, to ensure that all
    1 r4 X9 _4 L$ V& \1 H
  36. //             messages are posted and that the calling thread does. g  ~8 [2 H8 y
  37. //             not appear to block all threads!* Y! n2 }$ R. [% N- g
  38. // Returns   : none5 N. T6 w8 ^' z+ o+ L, b$ E
  39. // Parameters:      
    ; A8 a$ f. h- N/ L( v
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.; F6 ?1 D% A# z
  41. //////////////////////////////////////////////////////////////////////
    1 z1 T. W  b2 J7 b
  42. void XSleep(int nWaitInMSecs,int nAscll)" Z% \' @3 B  `+ @/ w
  43. {: J9 n! L% j" J% ]$ a( e
  44.                
    # T) ^5 S7 l# w8 \
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

4 Q" |  }- U) g% p( S) t3 F! d' b& O! X0 v- u: e8 o$ v& C
xsleep.h文件代码3 {4 s9 \4 p' @

, A7 Y  h7 y! ?
  1. //Download by http://www.cncml.com
    & l& W3 t; g& B: W8 n; `# \4 m
  2. #ifndef _XSLEEP_H_
    + j; x* L7 [6 k. f3 c
  3. #define _XSLEEP_H_
    # K, s4 P2 q/ x6 c* B. e

  4. ! r# A6 q0 j. W9 k  {8 A4 C& w5 \
  5. void XSleep(int nWaitInMSecs, int nAscll);( Z3 z/ T7 q5 ~. K5 P+ h

  6. , U1 E9 \3 W+ o7 ]5 J' e) d
  7. #endif // _XSLEEP_H_
    3 R+ h4 h: E" A. L9 C# H' z
复制代码
  G& c1 F* O& d7 r
& x! N0 ?8 G- {+ ~" n$ B% h4 }
mfc中的调用代码如下
1 L- ~$ Q3 @* Y4 x0 T0 |
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
0 X5 s- \. @  F7 T

, Q% u# i4 ^7 o$ X- M1 r% t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 15:28 , Processed in 0.148884 second(s), 19 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!