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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
2 W5 n* f: z7 l- [9 i9 _建立 xsleep.cpp和xsleep.p文件+ D5 V- e: E/ O1 f
xsleep.cpp文件代码如下) _+ @$ e1 o5 i; F
  1. //Download by http://www.cncml.com
    9 E$ O- b5 q" r( R0 g, e' B
  2. #include <windows.h>
    / K$ f- y& d- @
  3. #include <stdafx.h>1 @& O5 g5 A: x) M( K2 y8 O2 }! n& T- m

  4. ; D5 S% |0 A* K* J% \- k
  5. // This structure is used internally by the XSleep function
    ; Z5 U3 O4 r$ H/ y4 I
  6. struct XSleep_Structure8 Y+ v- }& G6 j9 i) q
  7. {+ d% g. C: N) s$ Q4 {% N# j
  8.         int duration;
    % r* P: K' Y& V& z0 c# @
  9.         HANDLE eventHandle;; ~5 }7 w7 y& U5 f9 a6 v
  10. };
    - X  M: C5 `- H; E) d# _

  11. ! O) x& A. \6 _- y$ Q( C' h( u
  12. ! Y7 I4 _  P0 r& V
  13. //////////////////////////////////////////////////////////////////////
    + U1 u3 s$ @8 k
  14. // Function  : XSleepThread()
    / C- z5 C% j1 h6 P
  15. // Purpose   : The thread which will sleep for the given duration
    % c9 M# f5 z0 l' c. k9 j
  16. // Returns   : DWORD WINAPI
    6 {1 k; ~, Q' h2 K8 d' S) c
  17. // Parameters:      
    7 y! z8 w" V" I% G8 z3 P5 q: E
  18. //  1. pWaitTime -# y0 u5 R) v9 j- i+ {( o
  19. //////////////////////////////////////////////////////////////////////
    , y- N( f& U8 J4 Q$ Q
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime): c( U6 n: Y; e  }# K# b2 |
  21. {1 Q5 d  E9 l$ }1 \
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    ) E/ n7 v' i! {3 c

  23.   ^2 x0 r) i  m7 [
  24.         Sleep(sleep->duration);( x7 N" A$ P" k+ K. D& C0 C
  25.         SetEvent(sleep->eventHandle);
    ) L" M2 Z3 o, [# {
  26. ! d9 c; m9 m2 n7 _% C$ S
  27.         return 0;9 Q: t) w3 K0 A" w5 B' l+ X, I
  28. }. s+ r5 C/ ?* O  Y$ K
  29. * b0 V" E# Q" i
  30. //////////////////////////////////////////////////////////////////////1 M8 x0 f5 m) E, J+ V' F/ ~
  31. // Function  : XSleep()9 |9 y" Y  k# h  W/ T
  32. // Purpose   : To make the application sleep for the specified time
    ' T) Z) D5 Q( m, R: B& Q+ G4 ]0 P- z
  33. //             duration.; D7 |" N: l0 L( E$ t2 A; t  i- ~
  34. //             Duration the entire time duration XSleep sleeps, it
    " N6 F5 o+ k/ V9 Q: x$ k6 ?: ^
  35. //             keeps processing the message pump, to ensure that all
    $ I! n0 @3 S% h( J# @. h1 t
  36. //             messages are posted and that the calling thread does
    . W. A* b8 A( p) ~6 I, T9 D
  37. //             not appear to block all threads!: \6 B* k- h2 I1 s& K
  38. // Returns   : none
    ) v3 l7 b  V" j( ^3 g* c
  39. // Parameters:       / E( L! K# P8 a; c
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    1 I0 h. o7 D3 z0 p2 ?9 n
  41. //////////////////////////////////////////////////////////////////////; r1 I! P% x5 q7 ]" ^+ r" ^
  42. void XSleep(int nWaitInMSecs,int nAscll)
    * @  Z. O0 A- I0 }4 Q7 T
  43. {; H" A0 a, h8 j) W0 G$ l
  44.                 # ~2 b# o4 k. k2 [( s. P" x
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

8 Y4 n8 s( n- Z) Z& y* N0 ?; o9 V( U) H) {6 B) V
xsleep.h文件代码, c! G7 _7 z- i  S) [

0 s7 \7 l( X7 z) @  u
  1. //Download by http://www.cncml.com  P+ g* B7 f% ]3 s2 N5 j8 m% K% d
  2. #ifndef _XSLEEP_H_7 @  p# r8 W/ C" V
  3. #define _XSLEEP_H_! n% l! ^9 B  t. Y
  4. 1 I) O2 T2 b6 t. b* f! ^
  5. void XSleep(int nWaitInMSecs, int nAscll);
      a8 G( O% T  m7 m: d5 y
  6. / _3 ]. t1 Z$ H/ v* o, {
  7. #endif // _XSLEEP_H_# P! j$ \  O6 k
复制代码
/ J7 U" T/ k' o: H

. Y* d7 }( @6 k+ s" c0 fmfc中的调用代码如下3 I; M" l( m4 Q  d4 Y9 Q
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

1 H9 @2 g) G" T& q8 ]' O8 y" g! ]5 p% Q# u- a3 S, K8 P8 |* O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:44 , Processed in 0.052976 second(s), 20 queries .

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