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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下$ l" h) G0 o, g; K/ S& Z9 }, ?9 u
建立 xsleep.cpp和xsleep.p文件  T6 g  n/ |& u( d- ?
xsleep.cpp文件代码如下* E: [7 a5 a9 y* j7 Q8 \  C
  1. //Download by http://www.cncml.com
    6 c" v7 y  ?: S& }
  2. #include <windows.h>9 I0 B3 O; J' j' H! j3 t& J# l% U
  3. #include <stdafx.h>
    9 ^8 z. v. F8 @$ S& ?
  4. 1 ]# z0 o' [% K, k$ b3 W! E$ z
  5. // This structure is used internally by the XSleep function
    ! d. S8 V6 V$ q/ x& K2 n" c+ z
  6. struct XSleep_Structure7 R$ E2 I$ g" f* t/ f
  7. {, M3 u6 H6 D. J" i
  8.         int duration;& L6 A7 \( [0 C
  9.         HANDLE eventHandle;5 @7 k- J: m3 n! c
  10. };
    & @- o0 k: U' S4 _
  11. 0 d6 [/ J, Z. A8 }- ~0 m& D9 T! v# \
  12. + z1 q4 {2 W) }: e5 c; o" a
  13. //////////////////////////////////////////////////////////////////////& u) u+ z' k& G' J
  14. // Function  : XSleepThread()+ x8 N& z* I9 P
  15. // Purpose   : The thread which will sleep for the given duration  u% X5 x. ?& F
  16. // Returns   : DWORD WINAPI) r; m% r. x; a2 f* M! y) s
  17. // Parameters:      
      |( T! |9 e/ ~1 j) o8 o
  18. //  1. pWaitTime -2 e7 a: J: w' L, V$ ?. e
  19. //////////////////////////////////////////////////////////////////////
    % }0 E  f$ V+ N; h* U
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    9 C. b  O  \0 p: L( C3 Y
  21. {
    ; t8 Y5 O2 c" i) W$ P
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    9 m% p' \0 \4 V( F" j
  23. 9 d, ^6 C$ N4 ~5 A5 b/ E; x4 r
  24.         Sleep(sleep->duration);
    8 |# _& W$ ^' D# w' O" z
  25.         SetEvent(sleep->eventHandle);( [4 L' ]' f7 H! ^+ [1 m) J: [
  26. % s0 J0 R# o: H8 n$ b
  27.         return 0;% R3 Z$ I& L- C* a4 |+ C2 e
  28. }0 |9 h" T" A1 H6 A+ R$ Y. E
  29. ' h. g8 B6 n) X8 j
  30. //////////////////////////////////////////////////////////////////////
    8 r) d, e' V" `& V; _
  31. // Function  : XSleep()8 s3 A6 X0 M1 v& t* M
  32. // Purpose   : To make the application sleep for the specified time2 d  _1 M( o- p6 C! @* ?. \. Y
  33. //             duration.) l/ u( |1 @# U. i7 \8 ]* N
  34. //             Duration the entire time duration XSleep sleeps, it' ~- i4 B4 ^1 w# e6 V6 G
  35. //             keeps processing the message pump, to ensure that all% b- W) V7 O8 ?' q) D
  36. //             messages are posted and that the calling thread does
    0 l1 z" y9 o. }3 Q
  37. //             not appear to block all threads!3 X% X2 t4 v) [3 Z$ z3 K/ F! B* I
  38. // Returns   : none
    0 }2 ?% J2 ?, X, ^8 ~5 K4 Y8 w3 `5 ~) C
  39. // Parameters:      
    4 B( X  L# D, X- w9 {
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.% W" I$ A4 z5 R; E! x' Z
  41. //////////////////////////////////////////////////////////////////////6 @$ C+ \; u4 {! [: H
  42. void XSleep(int nWaitInMSecs,int nAscll)4 T% N1 g* P. h9 }! H
  43. {
    % [8 G3 e" I4 s; t7 r4 ?
  44.                
    7 [' x1 K- e* C9 c3 q( y- H
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
5 A  {- A! ?( H5 y3 W# ^
, C; Z/ Z: G6 E4 Q2 C5 L; b
xsleep.h文件代码0 m' f8 H! x) B/ e
. n9 S2 }9 j3 G1 e# E# d
  1. //Download by http://www.cncml.com4 T3 a! G2 g; ~
  2. #ifndef _XSLEEP_H_
    + b2 U  Z# `% ]( X6 O6 x2 t6 w
  3. #define _XSLEEP_H_
    # X$ \$ j6 j9 _
  4. ' S* Z9 m+ z) u0 J) h4 f2 b" E
  5. void XSleep(int nWaitInMSecs, int nAscll);! T' q# w$ U+ o3 _

  6. - U' p+ t  B- {6 u% Y
  7. #endif // _XSLEEP_H_7 T5 _& G8 }+ Y* o2 D
复制代码

8 S" b: q8 ~2 C: y5 P1 N% k) U9 N: w) T
mfc中的调用代码如下
/ ~6 w% r% y$ ?9 d" b) ]
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

7 L8 T  |, P+ v9 x* ^
0 _- ?  R6 Y9 y7 u+ c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 16:15 , Processed in 0.095664 second(s), 19 queries .

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