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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
* \2 d, G: M2 y6 ^8 d6 |' ?建立 xsleep.cpp和xsleep.p文件. m5 D: r: P* e- E
xsleep.cpp文件代码如下) Q: m' C- h6 i1 z9 t2 U# l
  1. //Download by http://www.cncml.com
    7 A) i0 v" N0 P- s: s
  2. #include <windows.h>
    ( P* ?# B/ O) h& {7 g9 v. Y
  3. #include <stdafx.h>: F9 R. e' x* Z

  4. " |6 _/ t% x% J
  5. // This structure is used internally by the XSleep function ) e" N* ^- A3 M2 W) w& [* r6 v
  6. struct XSleep_Structure  p- Y- K7 T+ Y3 ~! y2 [* x3 H+ B
  7. {
    5 l0 P9 V7 D- i6 v+ z2 S
  8.         int duration;1 a4 Z* W7 v4 W! b
  9.         HANDLE eventHandle;9 V  v1 P$ ^- }0 Y; k: H1 P6 E
  10. };7 u6 _) R+ r2 C  I4 \

  11. 9 P% A# s# i7 A  g: |

  12. ! L5 ]8 u% @7 ~' e2 x  r
  13. //////////////////////////////////////////////////////////////////////4 }  @  w$ O$ N. c8 E% M
  14. // Function  : XSleepThread()
    0 Q2 D8 K9 E0 W0 `
  15. // Purpose   : The thread which will sleep for the given duration
    5 g' w& j0 L' {3 [" d9 Y2 @% c7 ?
  16. // Returns   : DWORD WINAPI
    " k0 z' y. C( Y& k! U* ^
  17. // Parameters:       ' ?  m! U. |. @+ z2 z. c# f- r! b% b; g
  18. //  1. pWaitTime -8 p1 c. P( S1 u6 u2 k% x
  19. //////////////////////////////////////////////////////////////////////4 ]3 v0 Y' a% [; C9 `* `0 w( d- g
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    , O% K" ]/ L: M" R7 b6 J# q( H* B$ x
  21. {
    1 f1 P* T. H' R! L0 d# f+ p
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    $ h, s5 E: ~; N6 q$ x
  23. ) S  U" w: I3 x4 k% t
  24.         Sleep(sleep->duration);1 f" h' N2 z9 u. m# j% v9 |5 z' E2 J
  25.         SetEvent(sleep->eventHandle);
    ) B2 y7 c9 H. u9 n9 R! ]. }

  26. # T9 X  e. i& w
  27.         return 0;
    ' s& ^7 Z# ~# W% j5 b9 S
  28. }" ]* q4 T: [, H8 k! P3 H7 S
  29. ' w6 i: q  b6 |7 O: C) O* k
  30. //////////////////////////////////////////////////////////////////////& ?$ o) Z% C/ `% `' f$ C* O% C4 R
  31. // Function  : XSleep()4 @& t" F& B' E# `( x7 M. M2 H
  32. // Purpose   : To make the application sleep for the specified time# g  t+ a5 a+ c, f+ h7 k  S0 C/ ^
  33. //             duration.4 Y) y3 d0 C0 S" g& q. y2 }7 P
  34. //             Duration the entire time duration XSleep sleeps, it4 Y) h* J0 _1 K( w! W, ^$ S  c
  35. //             keeps processing the message pump, to ensure that all8 X, q/ `& q; f
  36. //             messages are posted and that the calling thread does! Q$ H" m9 j8 U3 D
  37. //             not appear to block all threads!
    * D# I9 B; ?4 c7 B0 i2 v( c& R
  38. // Returns   : none0 m9 F- R  M# C3 s4 w2 L
  39. // Parameters:       5 r% Z0 g% l2 p, N+ K; G
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.2 ?/ z1 \0 x' W' V: F6 ^
  41. //////////////////////////////////////////////////////////////////////
    & `$ \, o, {* v0 a/ O  ^
  42. void XSleep(int nWaitInMSecs,int nAscll)
    , {+ \- Z' m+ [# B
  43. {' _4 Y5 A) b* e9 O$ Z6 E
  44.                
    ( Z8 T+ S. w, @
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
+ }0 P# ~1 n/ g% t7 D5 W$ g1 a

  ?' p% q2 E- e6 P7 z% j( @  z% x' K4 {xsleep.h文件代码4 K* M' ~( ~9 s5 R  k/ U! \% Q
+ c+ j7 U1 z+ _) s. P" V9 f1 E
  1. //Download by http://www.cncml.com3 C! M: z* o8 Q2 I* Y
  2. #ifndef _XSLEEP_H_+ f: z: I. d0 g# _! _' G/ s
  3. #define _XSLEEP_H_% h7 L' C1 r3 M+ F3 B8 l2 M
  4. / ^% O9 C% g# R7 u6 @8 G" ~, h
  5. void XSleep(int nWaitInMSecs, int nAscll);
    ) J2 n9 }8 U1 x8 b2 E. N) v
  6. & C4 g1 I- x6 A, U% h& Z
  7. #endif // _XSLEEP_H_8 I6 j) f* [' {' V  I
复制代码
+ |% q* n4 ]) `+ |

" W" p" m( _3 T: ~mfc中的调用代码如下6 ~- q1 U% @) c' m$ ^8 k1 c
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

) P  L0 z/ w1 J" O# J4 h8 O+ R% u
1 x9 U; L7 R6 b# b+ k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:55 , Processed in 0.075839 second(s), 19 queries .

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