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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下  N/ P- ^' e5 K/ ~. G& V2 \6 g
建立 xsleep.cpp和xsleep.p文件
0 p0 h: m# `5 z4 m! ?xsleep.cpp文件代码如下% j" f! r0 o- z$ h
  1. //Download by http://www.cncml.com
    9 ]! M# D: I# g" n2 V# d( ?& V
  2. #include <windows.h>* |: f5 |: n' t$ Y
  3. #include <stdafx.h>9 U5 R6 `$ M6 v, H  B

  4. $ T. A- `0 d5 d
  5. // This structure is used internally by the XSleep function
    * ~* V" Q3 g2 ?. n2 n# H% g
  6. struct XSleep_Structure4 U4 |4 ~9 k( V, X4 o
  7. {
    ; J  `" e8 D' H6 e. d
  8.         int duration;, V1 z2 D% D" `
  9.         HANDLE eventHandle;
    . {0 k% u( {- z% R+ ~3 s
  10. };$ Q& k+ P+ J3 V! U& f% ?% S

  11. , a' [3 B% R+ N# e, z, p

  12. 0 |' `! Q" x- [) z4 k  D+ {
  13. //////////////////////////////////////////////////////////////////////- B/ n" q$ f; s% l$ a. R
  14. // Function  : XSleepThread()( i2 m5 a, j9 }. m
  15. // Purpose   : The thread which will sleep for the given duration
    2 e" Q; k7 N* C! ~: z# w
  16. // Returns   : DWORD WINAPI9 W) L) b1 L4 G( @5 z% |* y7 P
  17. // Parameters:       . M: g3 k* C# i( o; Q2 j6 x' F8 B
  18. //  1. pWaitTime -$ c2 V. ~; b0 t4 X
  19. //////////////////////////////////////////////////////////////////////+ Q! C6 j7 b# U& X# w1 A7 o1 N; c
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)* T% G" P. ?/ p! I) r
  21. {: Z! m+ h% @) K2 o# b; ?9 t
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;& u& b8 z) L! {0 A
  23. 8 J+ p8 L* i" ]* h
  24.         Sleep(sleep->duration);
    - k6 d% l& ]0 }
  25.         SetEvent(sleep->eventHandle);
      c( B: {* e* i: K$ O- q7 W

  26.   K4 P/ Z$ R2 Y, F/ x
  27.         return 0;: b5 H0 V. o) s8 H; t
  28. }
    1 z% U- q( |& Z/ u8 d

  29. 1 K- u+ D+ X; k8 x9 Y9 F5 I
  30. //////////////////////////////////////////////////////////////////////
    1 b8 y+ Y! S3 w  u* I8 @2 j
  31. // Function  : XSleep(). l' X1 r& M0 n  G0 e1 t8 y, K0 }
  32. // Purpose   : To make the application sleep for the specified time
    : o# i3 G# l+ }, H4 h* ]
  33. //             duration.
    / }* @0 [" ~0 k- J6 ?
  34. //             Duration the entire time duration XSleep sleeps, it- }( \8 a5 Q1 i# U4 o- f& B
  35. //             keeps processing the message pump, to ensure that all
    , G! Z% r3 f. q
  36. //             messages are posted and that the calling thread does2 \0 }* i' H" c; R
  37. //             not appear to block all threads!
    / S0 N. e6 m  @" X4 w
  38. // Returns   : none0 q% o) [2 @: p% V: D) e" o3 `- |* K
  39. // Parameters:       , l+ A( z$ i' A+ x6 x
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.4 O: D, L3 A, z$ U- I
  41. //////////////////////////////////////////////////////////////////////
    ' Y; l8 r# `- H3 l: J3 E# J: G; d
  42. void XSleep(int nWaitInMSecs,int nAscll); F7 b- K& ^, C
  43. {
      S9 D2 _# u* W) m2 J
  44.                
    + d' ?! h" S* B; A
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
- e1 }  i: _9 w6 r
' Q( j2 t, f! R3 _# Q& m4 g( v
xsleep.h文件代码
% s; G- B: r/ T* f. z  i. r$ x# M$ I8 l
  1. //Download by http://www.cncml.com
    # t2 I( |6 F8 X$ D
  2. #ifndef _XSLEEP_H_
    " L& S; U! k, a" P$ K+ v
  3. #define _XSLEEP_H_
    * f: f" n# Q1 C- B$ {+ }

  4. 9 `7 U0 t: Y' M/ p  ~$ Q
  5. void XSleep(int nWaitInMSecs, int nAscll);
    * y& x  N0 u& x! l, H8 a  v9 e
  6. ! x  b9 t' V9 [) V
  7. #endif // _XSLEEP_H_* K8 a. |6 G5 W# k
复制代码

5 r0 r1 }+ R' O* f/ O# M- k7 A* ^0 H) s" I! u
mfc中的调用代码如下
) D1 x) R4 w0 R! s& i% f
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

4 E+ p* V) K3 Y- A  y% e, t) w  d6 D. T7 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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