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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下9 r: z9 ~/ i# a1 C7 j  Z* r
建立 xsleep.cpp和xsleep.p文件
* I. Z0 F4 G6 n+ c; txsleep.cpp文件代码如下4 a6 U0 w: F+ Z" `5 G
  1. //Download by http://www.cncml.com/ B# p9 B1 t5 f0 F* v
  2. #include <windows.h>, P  L( [+ u& j" N3 g" x
  3. #include <stdafx.h>* R8 z8 B" E* Q4 Z) r
  4. ' i& x) l+ v' C2 W+ G2 Q
  5. // This structure is used internally by the XSleep function 3 S# N( n% L1 X
  6. struct XSleep_Structure3 t+ J/ T0 p( r, [1 [. m: ]
  7. {" f" O  n- C: i% R8 P2 m; [# Z
  8.         int duration;
    9 T8 X* S! M* a/ w
  9.         HANDLE eventHandle;
    / r& c' [% C, @$ L1 x# d5 }  X- O! e! q
  10. };
    ) a4 T% C4 a4 b7 z. v& a
  11. ) i; b$ u4 {7 f3 w( \! N- D2 O7 _

  12. $ X  ~' j: t: M4 V8 K
  13. //////////////////////////////////////////////////////////////////////
    ( X% j' R, T3 x* r
  14. // Function  : XSleepThread(), C' d/ l3 u8 b" u5 y
  15. // Purpose   : The thread which will sleep for the given duration
    $ P+ j* X0 r; L+ x+ [1 w
  16. // Returns   : DWORD WINAPI4 F4 t2 H, R( L& m9 k
  17. // Parameters:       " X# Z' b) K2 F2 T2 E& d
  18. //  1. pWaitTime -3 y/ \# E" E( l4 C" ?; ~
  19. //////////////////////////////////////////////////////////////////////. P- {% v5 y+ F# l1 D8 Z/ S
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    ) j6 n$ t, O) R" j3 w
  21. {; C6 T) v+ I* K% P( I+ I2 }; {
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
      B2 Q% w6 M7 V1 |' `
  23. , H& t* \6 E$ l% k( X+ G! W
  24.         Sleep(sleep->duration);' r; t( {; A4 V4 U# d2 W0 v* {, l
  25.         SetEvent(sleep->eventHandle);
    ( ]# q1 g- H0 f- d  B" c$ ^# Z
  26. , X1 |* F$ X$ B( D/ @) R
  27.         return 0;
    * |0 }0 k; C0 D+ s
  28. }8 ^( O$ a0 V2 k# E

  29. - Q0 u+ C' t% _/ _5 b5 f7 r% c
  30. //////////////////////////////////////////////////////////////////////0 F! p) y& m9 c5 d
  31. // Function  : XSleep(): e, E2 v4 m8 h
  32. // Purpose   : To make the application sleep for the specified time
    % @6 R2 X' w* F5 C
  33. //             duration.1 R4 h3 C& l$ F2 n/ l
  34. //             Duration the entire time duration XSleep sleeps, it5 c1 t: M! V4 Y# a9 j- |
  35. //             keeps processing the message pump, to ensure that all
    6 ]6 g; S7 @# c0 C: ?9 I
  36. //             messages are posted and that the calling thread does
    % a% R% p' W% e3 _2 ]
  37. //             not appear to block all threads!- _6 V8 V$ ]7 B( ]0 P" S
  38. // Returns   : none; I! O5 w- p/ y  P# o
  39. // Parameters:      
    $ k/ \' |$ c1 O( j! N! Y; i
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    ! F6 m. @+ x1 V, h+ ?& m
  41. //////////////////////////////////////////////////////////////////////- W3 o$ _% F% a6 W# E
  42. void XSleep(int nWaitInMSecs,int nAscll)
    ( @. `8 q: p* P
  43. {& ~- j! b) t! V: V. d3 q1 t8 X; a
  44.                
    / c5 T2 b4 Z" h5 e
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

8 v& \1 ~. \) h  S7 q, G) Q( x3 d  }) V! O2 v6 p3 H! \. y9 S! S
xsleep.h文件代码
2 W. u+ {" }" \- N6 q5 u6 X' u  i
) S* Z9 J/ W0 t, d
  1. //Download by http://www.cncml.com$ L! c: q: g$ Q2 Y" P
  2. #ifndef _XSLEEP_H_
    . C* m) x. w1 _$ W
  3. #define _XSLEEP_H_6 W5 e1 \' Q$ g6 z! S
  4. " r: E  i5 T: }) w
  5. void XSleep(int nWaitInMSecs, int nAscll);
    / x6 y9 z, ^. f2 o( P4 f5 z0 U  y
  6. 8 Z' d; A3 J5 a  t/ K' g
  7. #endif // _XSLEEP_H_% a& V6 _2 f$ x2 l/ u, h
复制代码

, b: m1 r/ o- }0 [9 B7 _
5 F7 n! o) _. L+ C& zmfc中的调用代码如下) X, g# \" N$ X
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

4 l* h9 o/ W# z/ ?
1 i$ Z8 T0 [) S9 j0 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-9 10:31 , Processed in 0.128200 second(s), 21 queries .

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