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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
方法如下
5 t" R% W( e+ H7 t& w建立 xsleep.cpp和xsleep.p文件
3 R: P- j5 N$ ^1 ~* s; s! u+ j% \xsleep.cpp文件代码如下
' w* e: Z4 ^7 @! N8 v
  1. //Download by http://www.cncml.com+ A" M% c$ L- |
  2. #include <windows.h>  N$ H: Q' o. k  F0 p
  3. #include <stdafx.h>
    9 E  s' g4 e. X4 l4 j0 W; I" n' ?

  4. 0 C6 a: ^, Z8 w" d8 P8 B! n( l
  5. // This structure is used internally by the XSleep function
    * B" j, u: K' W  C; s9 s' D
  6. struct XSleep_Structure
      q" o7 h- k: S* J. ]' E# ~
  7. {- H- C' f- w% y" R. b$ v5 a
  8.         int duration;$ T8 c$ v  I5 F
  9.         HANDLE eventHandle;
    ' A: p3 |8 ]0 f1 K9 [- [- p
  10. };8 t5 o2 I$ {- g' [) _- h

  11. ) C0 V3 ~; O" t+ q. E! F

  12. / F, X2 h2 H; T; o
  13. //////////////////////////////////////////////////////////////////////" }4 M# `) N1 T" K
  14. // Function  : XSleepThread()
    , L4 r. j( V' c, M) I2 [+ {& Z; `
  15. // Purpose   : The thread which will sleep for the given duration! g; e2 G4 t: u: [: X
  16. // Returns   : DWORD WINAPI
    3 q( y& l- f- }6 w
  17. // Parameters:      
    , I% {! M! ?7 p1 Y0 [9 G5 W8 b
  18. //  1. pWaitTime -- K  A. P4 ]% N. Q7 Z
  19. //////////////////////////////////////////////////////////////////////
    0 L, Y/ |0 I$ p8 d; d" e! e, K
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime); {4 q! w) R1 p+ B0 n! r
  21. {5 v# n4 o* K' i  d5 U9 J# B" F
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;) U% f# W# F- `: z% V
  23. 0 m  T0 E* i7 s9 G4 A5 ^
  24.         Sleep(sleep->duration);3 L9 \# q2 ~2 g9 B! g
  25.         SetEvent(sleep->eventHandle);  O- v- `: ?: s& z4 V  P
  26. 0 p  _  n0 J/ T: w3 c$ h" L# [
  27.         return 0;$ e3 O7 Q  b2 d# M$ T4 L! O1 V
  28. }- o8 x/ {4 U. ~3 ]
  29. & Q8 d  O; P% u, Z" E
  30. //////////////////////////////////////////////////////////////////////; m5 r& }! V( `: H
  31. // Function  : XSleep()2 d" c7 k& _, l) O8 r! u
  32. // Purpose   : To make the application sleep for the specified time" _* ^  B" ?. Q, y( l
  33. //             duration.  U& ^: Z" S6 d: R+ C$ j
  34. //             Duration the entire time duration XSleep sleeps, it/ @- x2 j. v# O) Y6 x
  35. //             keeps processing the message pump, to ensure that all, |* f  w/ P9 n* Y! u
  36. //             messages are posted and that the calling thread does
    & t$ m' j$ V7 _, ], @
  37. //             not appear to block all threads!
    $ J, ~, [% v( F2 _# {: r
  38. // Returns   : none
    ( M. v. X4 s' }  {* o7 y* Y
  39. // Parameters:       - p. a2 E+ b1 d+ w: z3 V5 r% n
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.& p/ X: }3 K: I* l
  41. //////////////////////////////////////////////////////////////////////  i7 \" X' L; e
  42. void XSleep(int nWaitInMSecs,int nAscll)
    " I6 K. F8 M' R: Q
  43. {8 |1 J# O8 @6 a% ?/ @: }$ [
  44.                 6 `) h0 Q" \& `3 m' }$ o
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

% e' [  E! \6 c. H
9 h* g/ V$ v2 O8 p5 Y9 Ixsleep.h文件代码
  S  H9 Y+ }% z7 t, y7 v0 q% m: R* r  J& ^: M( m9 K
  1. //Download by http://www.cncml.com/ j4 B7 q) E- X$ d! |" X( }8 D
  2. #ifndef _XSLEEP_H_
    & p$ N- M5 @3 L: u
  3. #define _XSLEEP_H_
    ! N! ?. P5 G8 V- k1 o# E4 c4 {/ u
  4. ; J. y4 b% d! @1 O9 C1 h& f
  5. void XSleep(int nWaitInMSecs, int nAscll);& G6 f& }) h, I" R* D3 ?& B

  6. : t6 V' b. {) c
  7. #endif // _XSLEEP_H_
    ' z6 O0 P/ I$ c+ P! A- o6 M, a
复制代码
, L% J% l" }) c
% M* A6 w1 t, V; U/ n% x0 W  S
mfc中的调用代码如下. ~* `! Q) a8 e9 p3 p1 i( C" a
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
2 ~7 V" q( Y6 n8 Q
1 z& M* q' N; w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:56 , Processed in 0.057011 second(s), 20 queries .

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