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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下: y! @1 q' G# Z3 D- V( t2 ]
建立 xsleep.cpp和xsleep.p文件0 D" f, P2 \9 q/ f% ?
xsleep.cpp文件代码如下
7 z" C8 h1 q( ~" s- B
  1. //Download by http://www.cncml.com
    # q& \/ F- W* n9 U
  2. #include <windows.h>0 g: i) k1 [5 \6 W  S
  3. #include <stdafx.h>6 o1 a: `# O1 ^

  4. % z1 G( D( I0 j! V0 ?  |8 _3 q
  5. // This structure is used internally by the XSleep function
    , L+ H( O( C% g% {
  6. struct XSleep_Structure7 e7 }; g9 ~0 i0 @' l
  7. {
      ^% C) a+ ~4 P* N8 |
  8.         int duration;2 q& ^) {$ q0 i
  9.         HANDLE eventHandle;
    2 W' O: B( r% a, g; @
  10. };4 F7 s2 E- d- V# d) v1 S

  11. 7 x, o3 F5 ?1 |+ y9 |

  12. 1 `  \2 r& C7 c' X& S0 r
  13. //////////////////////////////////////////////////////////////////////
    3 D; l$ R4 X: ~: V. ^% }
  14. // Function  : XSleepThread()
    ! K; \5 n3 o" A% x- B
  15. // Purpose   : The thread which will sleep for the given duration# f. }% f3 ~5 t3 V
  16. // Returns   : DWORD WINAPI
    ' K# x1 x% r& U' H. _) C6 e
  17. // Parameters:       ) v# z4 ^7 ~, d( }
  18. //  1. pWaitTime -% R1 r% z& d( Y/ D9 c0 n0 B* c
  19. //////////////////////////////////////////////////////////////////////
    % x9 d4 z1 X/ x* A
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    , Q8 {+ r1 w* K$ T) g* G
  21. {
    " [2 t* j- g3 O& f
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;! y- W# B; S6 p, o" l- g5 E0 G

  23. 6 h1 [5 S; l0 B4 U1 g( A
  24.         Sleep(sleep->duration);
    # F0 A+ x) m; y
  25.         SetEvent(sleep->eventHandle);7 c- Q) y' b5 m" B$ S( P

  26. 1 k" k0 L9 O7 X- C$ m+ S
  27.         return 0;
    $ N8 K; |% I4 f# k; n. M. m* q+ x
  28. }4 l- |1 ]+ Q5 l$ ?8 {

  29. - C' a" W$ a% Y6 Z2 E' i, F
  30. //////////////////////////////////////////////////////////////////////
    ' Y' {; U" v3 T# u, q1 F
  31. // Function  : XSleep()
    ! h4 I9 O0 Y4 i8 Z
  32. // Purpose   : To make the application sleep for the specified time: }! F" _2 \# L$ s  K2 w5 Q
  33. //             duration.
    ' X2 \- ]& q7 }1 m# Z
  34. //             Duration the entire time duration XSleep sleeps, it
    . G( |, s4 U+ D5 ^8 a  B
  35. //             keeps processing the message pump, to ensure that all4 T) \, ^9 E  A  u+ i5 B4 M
  36. //             messages are posted and that the calling thread does
    1 c) p, i( R5 t7 l2 f
  37. //             not appear to block all threads!5 \7 p7 Y7 Q- u/ Q5 X+ d
  38. // Returns   : none
    $ ], o' E( u# a% Z- b% ]3 l
  39. // Parameters:       & A: [% `3 s. Q+ ]
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    0 o) a. h5 C9 J$ f
  41. //////////////////////////////////////////////////////////////////////
    , Z' `9 \4 f1 H1 [$ l
  42. void XSleep(int nWaitInMSecs,int nAscll)
    6 ^3 K% w# a9 [  V- ^+ E- L* a
  43. {$ s& _6 c3 T# u6 a8 W, l
  44.                 9 y( t' U0 ]- k- K5 W* L
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

: N, H& u# u2 B  d1 w7 Y
* f0 @1 J2 N  P) j+ {- k/ v1 Rxsleep.h文件代码, u/ C$ c2 R0 L" I9 T
0 v( h$ J) d# X; a5 a& _" ]5 F
  1. //Download by http://www.cncml.com
    ' E5 w/ y! R( w7 a2 Q
  2. #ifndef _XSLEEP_H_$ r7 C% }0 D# P8 W$ o: L
  3. #define _XSLEEP_H_- _8 F( Y: w$ B% I; n# w
  4. * ?: w# U, j% ?' z; l
  5. void XSleep(int nWaitInMSecs, int nAscll);
    " O- u+ O7 g2 I
  6. # W- N2 y( d! o; b
  7. #endif // _XSLEEP_H_& t. g9 b3 n1 A( @! S7 q1 j! _3 S4 V
复制代码

- t9 `- I- Y/ F! n) H+ l: V5 D
! i! [: v5 |2 j. n6 e5 _mfc中的调用代码如下! W; ^% k5 B5 s! ?. \& H# R1 E
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
/ T7 u4 t) q& o) o
6 s5 ]& N$ a4 {6 ~% z4 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-4 15:49 , Processed in 0.127792 second(s), 19 queries .

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