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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下8 m2 W+ }& w" }/ ?: d# C8 ?( f, }/ N
建立 xsleep.cpp和xsleep.p文件
0 V- H; b7 T; X  yxsleep.cpp文件代码如下
% D3 Y9 J( z4 y) e1 F
  1. //Download by http://www.cncml.com
    6 d$ J* t/ C! u0 n8 {" ^
  2. #include <windows.h>6 e; e7 T$ g7 R4 {4 B
  3. #include <stdafx.h>
    / R; G, @7 N9 o. `4 H2 w

  4. 0 A" N7 I" b2 i% y  M
  5. // This structure is used internally by the XSleep function + }8 ^2 t% L$ L& Z0 Q/ ~; m
  6. struct XSleep_Structure
    ' _. R# a, k1 D# K& V* r% H
  7. {6 r( y' o) H% N6 A: g9 u% j. w
  8.         int duration;& ]+ P$ m# H7 n6 H
  9.         HANDLE eventHandle;
    ) O( c4 }6 e, p# V$ j  y* Q* j
  10. };8 D% y+ B9 a; s0 f
  11. : Y3 f6 W1 T1 N* M# |2 L

  12. / m. a% m5 l8 }7 W- \
  13. //////////////////////////////////////////////////////////////////////
    ; Y' e. k3 [5 Y: }
  14. // Function  : XSleepThread()
    % F9 ^  s1 P" Q# ]9 D
  15. // Purpose   : The thread which will sleep for the given duration
    $ g/ P8 M5 Z2 A/ Z+ X* l
  16. // Returns   : DWORD WINAPI
    - u$ n, B& \) `" B
  17. // Parameters:      
    + W/ w0 C3 n# T2 Z, a
  18. //  1. pWaitTime -$ {5 W, N- T: L0 [
  19. //////////////////////////////////////////////////////////////////////
    0 T5 y' a- G, u7 Q7 T" v  E- g
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime): \7 P4 c  ?3 }; [' x* X
  21. {
    2 \% H, |+ S0 n8 y1 N
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    ) W2 ~- X- _7 `; ]# ^

  23. $ J# v9 t% ^5 w* q8 j' Y( R
  24.         Sleep(sleep->duration);% f. j. E, P6 ^) o" n5 x
  25.         SetEvent(sleep->eventHandle);: ?3 f( N3 R# S( u+ |
  26. . k7 C2 I2 M; W! X5 W
  27.         return 0;# |+ ^3 c7 q9 U+ b6 D
  28. }/ X* \' _8 q0 M
  29. " s. b/ m$ t4 C; W+ h! P
  30. //////////////////////////////////////////////////////////////////////
    # F; ?# }) A6 }' g7 y
  31. // Function  : XSleep()
    " i' u% n$ D* Q0 g* p
  32. // Purpose   : To make the application sleep for the specified time- e* Z/ u" @+ m/ f
  33. //             duration.
    $ }' ?# _& l6 N% G. b) u
  34. //             Duration the entire time duration XSleep sleeps, it
    & Q$ ^' f( O; ]' H
  35. //             keeps processing the message pump, to ensure that all
    % o9 H3 B8 h! M. V
  36. //             messages are posted and that the calling thread does; _6 |4 p! ?0 o( D
  37. //             not appear to block all threads!
    . ]) v+ I2 m! d9 }1 c
  38. // Returns   : none
    / r6 v( I, g/ `3 H1 b
  39. // Parameters:      
    & L3 h" y1 R0 `" q4 A6 x6 G
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.- F  F; N2 L( h& X; [3 z
  41. //////////////////////////////////////////////////////////////////////
    4 f+ e1 z* ]# A3 u
  42. void XSleep(int nWaitInMSecs,int nAscll)( Z: u; i* D/ b* O1 E" r
  43. {
    6 |) j5 Q& W; d6 b/ L/ r
  44.                 9 f) z% @* ^6 Q! ]5 [( u3 O! l5 J
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

1 t9 ?4 z4 N* l+ d2 Q# o
. i: n# H# |' @+ q; i, E* D, p& vxsleep.h文件代码
+ k+ a( k9 ~8 u# }0 F
7 V0 k6 C. ?# [  [$ t7 ~0 n3 F
  1. //Download by http://www.cncml.com
    6 n0 A  n6 O9 w- i
  2. #ifndef _XSLEEP_H_. t; o( i# h6 M4 L
  3. #define _XSLEEP_H_" E& E1 {$ @' C; |$ n0 e- p

  4. # a# E8 m7 s6 u6 a  Z  \9 i4 X
  5. void XSleep(int nWaitInMSecs, int nAscll);5 C5 Y6 ^, P5 {# G

  6. ; ~7 y; x$ t6 g; S
  7. #endif // _XSLEEP_H_
    , o$ g- ]* p7 }7 k2 G; V* v
复制代码

8 n; b/ V. ]  I, o( \* p6 c4 B
. V% ~2 L- F* N; V" _9 vmfc中的调用代码如下6 _; I) y: q6 N. }' P! B
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

# H- v8 @9 ~5 n2 H  q- W; t  ~4 C5 F! e0 N# k6 o& f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 23:58 , Processed in 0.052531 second(s), 19 queries .

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