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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下. F' ^* l6 `- B8 P' t
建立 xsleep.cpp和xsleep.p文件; ~7 d5 X) Z! l2 ^/ ^$ @+ e7 w" N
xsleep.cpp文件代码如下
% X$ T9 X0 q6 q, e) W" G. A% h9 _8 ^
  1. //Download by http://www.cncml.com
    + G8 ?. A0 o9 w8 t4 H; T
  2. #include <windows.h>
    6 T/ o7 _  `8 H2 |0 Q9 C$ ~
  3. #include <stdafx.h>
    * {2 K9 x3 d: v. M  Q2 u
  4. # ~- e2 P1 T5 N, Q0 o" z
  5. // This structure is used internally by the XSleep function % f! }7 v! j. E2 X7 y
  6. struct XSleep_Structure, ^+ {! H  U: i4 o' n! I9 v) i
  7. {: b) B' M% |  N' ]5 B
  8.         int duration;
    0 Q  l  u% O; ]( ^2 h) x  l
  9.         HANDLE eventHandle;5 M1 J/ C0 ?/ t
  10. };
    ) ^; e% V, q1 q- L' Z. N
  11. 6 J5 b6 }7 y3 k9 w! D9 y4 h3 d

  12. $ D! b4 \% F2 s  u, `' A: d
  13. //////////////////////////////////////////////////////////////////////* J, Z# S( `; E+ g: v
  14. // Function  : XSleepThread()7 \# S* l# j3 e
  15. // Purpose   : The thread which will sleep for the given duration' ]! ]" R5 j9 P1 ^7 C, z* p: h
  16. // Returns   : DWORD WINAPI2 A/ V: X) D2 A5 a) U. x; v
  17. // Parameters:       ; e- O2 y: R& \5 f
  18. //  1. pWaitTime -/ w; {' i% H3 }1 |  Y2 e, F
  19. //////////////////////////////////////////////////////////////////////
    : G0 |6 J. L+ B' B
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)+ I& o9 u# \" n1 N
  21. {" f; d' @; Y& j
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    ' N* l8 d9 n% x3 U% G
  23. # P8 G1 \* o& b) d/ ^& T
  24.         Sleep(sleep->duration);/ j3 q% U% W" W% b6 q, n  X4 V
  25.         SetEvent(sleep->eventHandle);& ]7 ?. u/ e1 S) z% o; o& |. E

  26. . A* O7 `% H4 Z: H8 S( f
  27.         return 0;+ \0 O' W) c6 I( I+ s- d7 c
  28. }' ~. N2 }7 [) ^; p& k( X- W; I
  29. 5 y. X5 ?: B. \. I" N: O
  30. //////////////////////////////////////////////////////////////////////
    + @5 {: w' l$ I' J
  31. // Function  : XSleep()
    6 u  y; ?* n  c8 a+ t5 b( E
  32. // Purpose   : To make the application sleep for the specified time" c, ?$ d+ A. a( p! i. H1 E: o
  33. //             duration.- i. _6 S, \8 ]9 |" G3 q/ M, T2 a
  34. //             Duration the entire time duration XSleep sleeps, it0 X% d5 _# @; Y# m; x
  35. //             keeps processing the message pump, to ensure that all
    4 ]& H7 F& c" ?* D& a8 n6 F& A
  36. //             messages are posted and that the calling thread does
    ' u7 ]6 Q# N; S- \3 Y3 }$ T
  37. //             not appear to block all threads!
    , m$ p+ g6 i% L% }+ ^+ }
  38. // Returns   : none
    ; W2 ]4 x* d. e. h2 j0 B
  39. // Parameters:       0 ?; J  v* i7 ?: V- I) T9 s
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    8 ~1 N( O- K' n8 o
  41. //////////////////////////////////////////////////////////////////////* g' A: [3 P3 a" _; U
  42. void XSleep(int nWaitInMSecs,int nAscll); x( ]3 e- o7 m
  43. {
    * `1 M& k' Q2 A/ E0 t4 ?
  44.                
    5 L9 c* ]/ O5 o( B, o6 v
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
' n4 y2 v7 j/ Y% v3 x

. Z5 J: |7 h  K; Exsleep.h文件代码' Y, L$ _- G( E+ ^7 L* m2 B

; p5 K3 `/ }, q+ B9 U- C; F9 d
  1. //Download by http://www.cncml.com
      a1 S& ~, N( J) k( [
  2. #ifndef _XSLEEP_H_4 O3 W6 o6 z0 z
  3. #define _XSLEEP_H_
      s, T# j% L+ q

  4. 1 Q$ F9 b5 `/ _0 w
  5. void XSleep(int nWaitInMSecs, int nAscll);
    - h9 g* s0 U- o6 Q8 C# H' ?' Y, ~

  6. : C( C9 z, j! H7 e
  7. #endif // _XSLEEP_H_$ S! ]+ e  v$ z# t
复制代码
' q' [5 K7 w) i2 {

0 T' R3 r7 G  V# b0 t% {: y+ ~mfc中的调用代码如下
, a6 m6 T" [( z+ Y
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

# [6 ^8 m; J/ R/ X8 H2 I* I7 Z$ z+ k% B1 r! s/ u/ L9 c8 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:36 , Processed in 0.114413 second(s), 19 queries .

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