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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
" |8 m3 M7 u% L: ?% L; f建立 xsleep.cpp和xsleep.p文件
# Q) F  @& H, t* J9 O- b# Lxsleep.cpp文件代码如下
2 c% _8 ^8 _6 j5 }/ C# a
  1. //Download by http://www.cncml.com
    ' h: ]6 H5 t  K" [
  2. #include <windows.h>$ U+ k0 }2 p, Q. @: c
  3. #include <stdafx.h>- @5 `$ \5 {+ Q0 L, c
  4. & D% N9 q" ?2 I9 H! f; i' Q3 V! J
  5. // This structure is used internally by the XSleep function
    6 O+ m$ E6 w  {9 J6 K& E6 F6 S
  6. struct XSleep_Structure
      O# e7 r3 W+ z# }7 a, ?
  7. {
    # R( {6 @( E3 @% H+ @, u: I
  8.         int duration;
      j- D$ S1 K# j: b! W
  9.         HANDLE eventHandle;
    " S+ ~+ k' Z2 X: D! [
  10. };
    3 @8 _7 _1 I, d2 ?+ \1 K

  11. " w% e$ a( _$ U" t) }- b; i

  12. ( _$ l% q8 I( q6 q* R. W0 n+ R
  13. //////////////////////////////////////////////////////////////////////
    ( F6 K! Q6 _( _5 {  h  R
  14. // Function  : XSleepThread()
    3 N0 e6 k7 [/ x& B
  15. // Purpose   : The thread which will sleep for the given duration6 A/ c- B8 O' F, `  ^) x0 v
  16. // Returns   : DWORD WINAPI
    7 s0 J- O' e; v* D( w
  17. // Parameters:      
    5 |- F, B- ?, u; Q+ C! B) k: L
  18. //  1. pWaitTime -. H7 N. t( g( o
  19. //////////////////////////////////////////////////////////////////////' _9 x" W* A* ?3 U) A
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    * d' D' q" I  z% x6 u3 x
  21. {0 ?5 N. n5 F5 o- H0 t* y
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    8 S% R3 P5 p9 T5 e4 K5 o

  23. - ?7 p3 V! h# J6 _* T
  24.         Sleep(sleep->duration);$ J8 _5 t- A6 Y" E0 O* o1 \
  25.         SetEvent(sleep->eventHandle);/ N7 {* A9 C9 M

  26. " C' t( W1 ?! A, N5 w
  27.         return 0;
    # p7 b# |7 ~- y6 @* _* N2 A2 j: n. |
  28. }3 u  R" Z' ~4 u1 z8 S; v
  29. : X  i7 [% {  E9 `5 e
  30. //////////////////////////////////////////////////////////////////////
    8 l2 ~) T( i0 M2 F4 d3 ]) t- I
  31. // Function  : XSleep()
      b5 i! \& G( R& z" b
  32. // Purpose   : To make the application sleep for the specified time8 y; r' E/ P. D* ?; B% v" @5 n
  33. //             duration.
    + ~. \) m. I, |
  34. //             Duration the entire time duration XSleep sleeps, it
    6 ^0 [( ^, G' v
  35. //             keeps processing the message pump, to ensure that all2 b% v* d0 Z! E2 |+ ?
  36. //             messages are posted and that the calling thread does
    $ L: n0 R, B! d+ O
  37. //             not appear to block all threads!
    ) ]& q/ ^3 j$ _) L+ H- |
  38. // Returns   : none
    3 e! K. C5 s! o( u3 M7 y* y
  39. // Parameters:       % L7 \& s4 p& o4 r
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    7 v2 _& H4 ]  M" G6 m
  41. //////////////////////////////////////////////////////////////////////
    8 X4 t2 B! j' ~+ r+ T
  42. void XSleep(int nWaitInMSecs,int nAscll)1 |$ E1 L/ M9 Z( P7 f
  43. {- A7 h! {. ]3 V! A' x. s
  44.                 . P( O/ a' D, S
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
7 @1 M: [, y4 r! R7 C
8 ^6 T0 l- m# ?3 _
xsleep.h文件代码4 u  G; n, G( M) [4 k, E

' ~/ p. A+ O! V: ]
  1. //Download by http://www.cncml.com/ t% ^4 J! y6 S
  2. #ifndef _XSLEEP_H_5 m- w; A5 N' x; j( W0 i
  3. #define _XSLEEP_H_
    5 B$ Y* M' e7 f. l, m

  4. : B8 m6 s6 Z$ j2 q' |6 A% z
  5. void XSleep(int nWaitInMSecs, int nAscll);
    , ~2 C5 b: V1 ]* X0 ~- g- ^  Z* {
  6. ; d+ n. K9 ~# ^: p
  7. #endif // _XSLEEP_H_' y5 _. M1 w& I4 |$ P% N1 X
复制代码

* O0 d) j8 ~1 M" B; w' h- n# \' m  m, `& f8 {
mfc中的调用代码如下
- e/ f: E, D; v, }' n. d7 i4 Y
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
% r* w$ g! Y( O; v! y, a
& U  v, ^, V. F8 L* ^& P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 02:57 , Processed in 0.052123 second(s), 20 queries .

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