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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
方法如下' ~- W# d, [2 ~
建立 xsleep.cpp和xsleep.p文件
* n) Z- z2 _7 h+ A- zxsleep.cpp文件代码如下
* O( R1 W; z" \
  1. //Download by http://www.cncml.com2 |- _$ X& ]+ M. q
  2. #include <windows.h>- {: ?5 S; V1 W# S0 r
  3. #include <stdafx.h>! J) b, J  q# l7 i

  4. - q/ n) j3 }; s, M7 j+ s
  5. // This structure is used internally by the XSleep function / ^- F7 s: {% E( b0 t6 m
  6. struct XSleep_Structure
    + X' `6 R7 k; f  j: t. w, ~
  7. {
    1 U7 i$ y. R! {1 J
  8.         int duration;+ Q5 t( S& m5 h0 V
  9.         HANDLE eventHandle;" Y; W8 p3 y! r8 i6 o8 c
  10. };
      |# o  b9 K7 i3 Q1 I
  11. & a# P, Y9 ?7 q0 g& X4 Z
  12. 4 N: n9 n+ o- X% f4 r3 `
  13. //////////////////////////////////////////////////////////////////////6 K' q. N. u2 @6 ?
  14. // Function  : XSleepThread()  w0 M- u: l- T$ b. Z5 j
  15. // Purpose   : The thread which will sleep for the given duration
    ; M$ N1 S8 k4 j# C
  16. // Returns   : DWORD WINAPI
    1 d* u( @; I  P% Q4 a% S- N
  17. // Parameters:       * l! P! t/ Y# H* Y0 h( J  J1 E
  18. //  1. pWaitTime -
    + {# B- m0 W( L3 z7 V: d! a. r2 ~
  19. //////////////////////////////////////////////////////////////////////
    2 L: [  }) T  K8 _0 u9 y6 m, o8 H
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    & M, e/ p; V1 Q4 g
  21. {
    , O4 K: c. o  ?/ X; m
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    1 `: C% k0 Y4 W* s' x# I

  23. 1 a1 q( c+ b; M' `0 a; e0 C5 [5 G2 Z
  24.         Sleep(sleep->duration);
    * p; G) a8 H3 B: ^
  25.         SetEvent(sleep->eventHandle);
    ! |  t/ i& p" g0 V/ _2 {$ |
  26. % y; y8 B& o, b
  27.         return 0;
    ' z' a, R# d* D& A8 O5 o% i  \* Y$ l
  28. }
    ; ~* C  ]+ B; P/ k- ]; Q
  29. , F1 F* ]+ r1 v& V! g  c& K. Z
  30. //////////////////////////////////////////////////////////////////////$ M2 n+ G9 G- q4 g- A* \2 u0 `# X
  31. // Function  : XSleep()5 C* n& q2 M1 x+ u: Q
  32. // Purpose   : To make the application sleep for the specified time
    % K: ~8 a) v+ d
  33. //             duration.1 w% V9 _& V4 z
  34. //             Duration the entire time duration XSleep sleeps, it6 k4 R) p/ n% y/ d
  35. //             keeps processing the message pump, to ensure that all
    ; k: a7 [% s' R- F
  36. //             messages are posted and that the calling thread does: |9 J' ~. Y; a  {* r
  37. //             not appear to block all threads!- f1 K& g5 K$ i4 k4 s
  38. // Returns   : none
      i$ b! v4 V+ k9 q3 n4 R
  39. // Parameters:      
    $ ~/ \3 K  S* r7 r6 E5 A# ~
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    . N2 ?! g1 T: I/ f( T: p* j
  41. //////////////////////////////////////////////////////////////////////( i& d7 R# r& n+ D9 s* K5 p' d7 j/ w7 W
  42. void XSleep(int nWaitInMSecs,int nAscll)
    1 O9 A5 E4 W+ X3 b+ i9 r) b
  43. {
    ) ?) W5 n. D( x/ D
  44.                 , Y1 I, U  z" |6 X4 \$ n7 G" `
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
. z3 p1 C3 j* T$ Z- \) d& Q  q7 ~& N
- q2 r3 R6 ~( k, _0 B" v1 i# v. a
xsleep.h文件代码
" V% o7 M  h1 \5 w) G- h
$ r$ I. a# j' v0 l4 b8 W
  1. //Download by http://www.cncml.com
    , I- T0 G' p6 n. c- u( o4 h+ n
  2. #ifndef _XSLEEP_H_/ P! U: Y0 Z$ u) s
  3. #define _XSLEEP_H_
    ; {) M& K4 Q  E) A( N

  4. 3 k. p3 ?, A) w- o
  5. void XSleep(int nWaitInMSecs, int nAscll);
      @2 n1 U# ^8 u* k. y. b$ h

  6. 5 Y* p3 a/ r3 D  U4 G& \
  7. #endif // _XSLEEP_H_7 c) S1 A2 C4 g6 j
复制代码

; |( y: u# c9 b& }" A0 S* Q5 V6 U8 d6 V% p. k7 l) B6 ~: P
mfc中的调用代码如下
2 z* d5 \  h& \+ S
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
0 x. f0 O; Q  M! l
; L0 y% p1 \! E, N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:51 , Processed in 0.055123 second(s), 20 queries .

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