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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下& q; K3 S. E. W+ h2 @* o
建立 xsleep.cpp和xsleep.p文件
0 ~* _8 f* Q+ J9 j" Ixsleep.cpp文件代码如下. P0 |. z4 j# T- s3 L8 I
  1. //Download by http://www.cncml.com
    6 J( e2 K* {* _
  2. #include <windows.h>
    ( g' V# i. |/ \  ]. L
  3. #include <stdafx.h>
    7 W- I# b  e( W- C* i) z) S6 N0 o2 S

  4. 3 b- r$ o0 a# n& k' z/ a
  5. // This structure is used internally by the XSleep function
    . v; K5 Z; U3 m2 |- i3 S! e% }* W, s
  6. struct XSleep_Structure+ d! L3 h5 C" I* Q0 @9 ~9 D
  7. {
    $ X0 I  h  Q5 ?' _2 Y* f
  8.         int duration;
    / T* d; T# G0 F: V& w
  9.         HANDLE eventHandle;) a" s( A5 m  K
  10. };
    1 T1 ]% d' v) N
  11. : U3 e1 }- B2 @) X* F# F

  12. 1 B. N2 ]! C3 _+ N  b, I+ M- ]
  13. //////////////////////////////////////////////////////////////////////3 k3 C  D- X; t4 I, `7 v  D$ H5 d" r
  14. // Function  : XSleepThread()  ?8 z5 z- |9 U/ c8 y9 d  q) T5 |
  15. // Purpose   : The thread which will sleep for the given duration& H" ^7 O, S- `- R6 J+ p+ T
  16. // Returns   : DWORD WINAPI
    - l3 v2 T" |* q$ ?
  17. // Parameters:       # I* M- ^# T+ m2 k9 [- l
  18. //  1. pWaitTime -8 @: [' U  t! ^/ E% S: g, X- i
  19. //////////////////////////////////////////////////////////////////////
    * n4 f0 p6 k& J2 P
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)4 B- W) w' @, k1 a6 X& s6 F. W8 {7 U
  21. {
    1 ]9 j: p7 M$ Z5 v9 |8 V: M
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;) p: d3 R5 e  l4 E  Q7 m4 K

  23. & ~4 j% J, P5 O* b" o. O
  24.         Sleep(sleep->duration);) f/ h0 m0 ]9 k% i4 y' U* s+ b
  25.         SetEvent(sleep->eventHandle);
    5 f  k6 O- A7 p2 _+ I. |( u
  26. 2 U. c# D( |% E4 j9 i7 s* B" L
  27.         return 0;
      N% b3 ]/ k! {5 D
  28. }
    ' B8 ^/ X; T9 o. t; O& l& x

  29.   Q2 b( t' F, T! ]
  30. //////////////////////////////////////////////////////////////////////
    - y( K) |" |- E6 u
  31. // Function  : XSleep()
    ; M+ X; c# D3 L" l9 [# `4 C
  32. // Purpose   : To make the application sleep for the specified time
    . H( N$ r  T5 c4 _' I
  33. //             duration.
    3 s. B0 @# D' ^* n; R' S
  34. //             Duration the entire time duration XSleep sleeps, it" B- S. a" Y- {9 n
  35. //             keeps processing the message pump, to ensure that all
    : S4 d: F% k; ?7 k7 A$ Q
  36. //             messages are posted and that the calling thread does
    ! _8 |; w, f* D5 e% G. R
  37. //             not appear to block all threads!
    0 \( e1 n9 }7 `! p5 |
  38. // Returns   : none0 y6 V0 ~' w! N5 A2 O! o
  39. // Parameters:      
    # ]# E3 R. J& @/ p" e; K
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    5 a- a% t) \  K6 K( T, N5 ]1 r1 T
  41. //////////////////////////////////////////////////////////////////////
    9 ?4 h7 b. X1 o, u& }
  42. void XSleep(int nWaitInMSecs,int nAscll)
    : |  ]& A4 u! j$ F) n9 k
  43. {. V* L7 Y8 P" m3 Y: d# i+ M1 Y. R  a0 F5 s
  44.                 & T( E8 b' n' o& b6 H
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
. t# O; S1 @& h0 h7 j; W3 J+ z2 J
" v. b3 ?! a6 f% `) n: j
xsleep.h文件代码2 D8 t; G" v- X0 C, b
/ E3 @) r3 n, r( l" m8 ]
  1. //Download by http://www.cncml.com
    ; n5 k7 {/ y2 B
  2. #ifndef _XSLEEP_H_7 n- h3 P5 M7 O( d7 u4 X; f! o5 q
  3. #define _XSLEEP_H_& A2 T2 h& g2 s4 H  B& [0 ^
  4.   a$ V- o+ }9 p+ p9 W- J# T
  5. void XSleep(int nWaitInMSecs, int nAscll);4 U7 p! l, l/ E0 {9 O5 ?) \0 S
  6. . {" d; y$ I' e$ r  Z
  7. #endif // _XSLEEP_H_- h% P. i" P' i- Y, I
复制代码
( u7 [2 d6 [) R8 V9 X
/ i3 N4 R3 ^& ~+ V  g
mfc中的调用代码如下
& J1 V& k) e3 P
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

, C- u. K  H3 s& v. R% ?
6 M+ ~" g4 |; _5 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-6 18:44 , Processed in 0.107079 second(s), 19 queries .

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