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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
5 J% S- B. x# E1 J$ C5 o1 V建立 xsleep.cpp和xsleep.p文件" e6 {5 [: x# m: R
xsleep.cpp文件代码如下
* `: _3 e9 k3 A3 O7 c% w. T
  1. //Download by http://www.cncml.com2 q, @5 D1 O- N; ^( V4 v
  2. #include <windows.h>2 A, z2 Q5 E4 {( E  s
  3. #include <stdafx.h>
    3 ?9 Y' ]" [# W
  4. 9 G1 X5 p! P1 ]. M. J
  5. // This structure is used internally by the XSleep function
    : S* D7 f) b9 w+ E# a% L
  6. struct XSleep_Structure
    & N; r; E+ c( p" K7 N% ]
  7. {
    4 F; |& _+ M! ~1 c2 E, F  z
  8.         int duration;
    + d0 W& X$ D4 q; D0 h
  9.         HANDLE eventHandle;- [. v2 B+ b  h$ a* T* ]
  10. };
    9 ]- s8 }6 d. P: b/ w
  11. : [0 X* s: Z& a0 u
  12. * Y) _- N3 z, k( Z7 B5 Y: z
  13. //////////////////////////////////////////////////////////////////////
    0 c. E& s8 C4 `* {
  14. // Function  : XSleepThread()- |* M# H' g3 L8 k& e4 D
  15. // Purpose   : The thread which will sleep for the given duration, @  B1 c9 }) j
  16. // Returns   : DWORD WINAPI2 h* u8 j; I* o8 w
  17. // Parameters:      
    1 @: q0 t" x- D  V! X1 H$ n# P- _' Y
  18. //  1. pWaitTime -
    , v/ @- @; v! e
  19. //////////////////////////////////////////////////////////////////////
    - i! t8 Z1 r; d: Z% z9 l
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    " N/ _- a# j) e7 N7 Y1 |9 `
  21. {
    4 u4 U' A* w" c, _5 d, C
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;* Q  `, w8 \) M4 e. R
  23. . J5 \/ j  \; R+ D4 i; |
  24.         Sleep(sleep->duration);+ p5 P+ b# z9 b6 n0 L
  25.         SetEvent(sleep->eventHandle);$ X1 _: s; I2 a3 k

  26. - T; j; X% ]% O: o
  27.         return 0;& X0 }4 X6 h8 z, I
  28. }' U3 b' R/ v) s2 S

  29. 8 S- @% M4 O; f4 m) }+ G, X
  30. //////////////////////////////////////////////////////////////////////7 V5 M* _+ V4 V$ \3 M+ h
  31. // Function  : XSleep()
    1 l8 n( Z* s0 K! p! P$ C0 A" X
  32. // Purpose   : To make the application sleep for the specified time$ F9 d+ ?# L& T" {8 `
  33. //             duration.
    # n$ ?  D0 h- T7 ?. h! r2 H3 g. _# W6 R
  34. //             Duration the entire time duration XSleep sleeps, it7 W1 L* n- y2 @; j8 X. r
  35. //             keeps processing the message pump, to ensure that all
    0 j6 ~3 }# F: j8 n) V6 ]* X* T
  36. //             messages are posted and that the calling thread does  `: {( `3 z/ m# y: }
  37. //             not appear to block all threads!
    " z1 d6 a4 q/ I
  38. // Returns   : none2 C. u/ }, _3 P
  39. // Parameters:       4 p8 E. s' Z3 W! l
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    ' P- q8 [8 Y0 {5 Z) [2 B# P
  41. //////////////////////////////////////////////////////////////////////. Z9 |8 U$ y  N6 T' t& A" P
  42. void XSleep(int nWaitInMSecs,int nAscll)5 y' C7 Z, |- x2 S- q& N/ b
  43. {# c3 K9 ^. W5 w- I7 ~1 j
  44.                
    $ H+ O! w  c+ A5 y3 b8 H: d' t; }
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

( h, K+ f: `* R% h
" U. {8 `5 d  N1 o9 l* U5 J: txsleep.h文件代码
' n. P; O6 V/ O+ ^* v
8 I7 Y, K: S) g5 V
  1. //Download by http://www.cncml.com
    " V8 d. h# g- k$ d: {% h2 g4 z5 I: \
  2. #ifndef _XSLEEP_H_
    - }2 X; @5 t: H
  3. #define _XSLEEP_H_
    ( J3 R! n; P' H8 y! [1 t$ n# m
  4. ) v! @& S# D: o1 l
  5. void XSleep(int nWaitInMSecs, int nAscll);9 x! L2 F- Q# c3 }
  6. 1 }* ~$ R0 c3 @  ^& Z  w9 p' K4 ?0 c4 [
  7. #endif // _XSLEEP_H_9 `3 A2 T! m& g+ _
复制代码

, r3 s! a+ U. J& O9 g) U+ ]5 e, i
& f! K7 E0 G) p) w: ]mfc中的调用代码如下$ J$ S/ j8 k/ I8 u
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

$ m1 Q- J; s" o
8 e! T6 I, T2 G' q! j) ^; M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:43 , Processed in 0.050477 second(s), 20 queries .

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