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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
" ~- ?! o1 ~% H* [8 v建立 xsleep.cpp和xsleep.p文件3 F9 k. K, p; v1 p  b
xsleep.cpp文件代码如下- j% T6 e/ h& j: ]0 y, W
  1. //Download by http://www.cncml.com% H* X5 f& Q( l' B  u; i! b" Y
  2. #include <windows.h>8 G* g7 R: E6 M' C
  3. #include <stdafx.h>- I5 F( E( n# k' h* z5 u

  4. 9 {8 n( X' M: n7 T
  5. // This structure is used internally by the XSleep function $ A& t  B  H; `3 x; E) K
  6. struct XSleep_Structure
    ) a$ \" o" P! _: O: b0 v& \  q
  7. {
    * B/ t9 m5 b: u% ^1 t1 p
  8.         int duration;
    8 D3 i' y* i, i1 j
  9.         HANDLE eventHandle;& T, L+ F7 H' S7 @0 b
  10. };2 m& ^. Y8 }/ |7 Q5 s2 v
  11.   ]9 F3 q0 v9 G, u) @
  12. & H& m$ T) y/ J' p! a, }
  13. //////////////////////////////////////////////////////////////////////
    ) C4 N8 ^1 K) I) K) x
  14. // Function  : XSleepThread()1 @. Y( [/ L5 h/ k
  15. // Purpose   : The thread which will sleep for the given duration$ c; r: ?; p+ L
  16. // Returns   : DWORD WINAPI
    " Q1 M2 a, q' @
  17. // Parameters:      
    8 N1 r0 }; z  g. O; Y1 l
  18. //  1. pWaitTime -
    - h) Z; Y& W" O$ h; I: e0 W
  19. //////////////////////////////////////////////////////////////////////
    - ^$ w  N* ?* ?" }( Q6 e
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)* |2 X* e! ^7 M4 y7 a
  21. {+ e" Z- W! X1 M- C6 X* A; K
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;' N8 D% J6 c. E9 u$ ~5 }
  23. 4 p+ [  a+ w7 X- w, j
  24.         Sleep(sleep->duration);
    ' `# o3 `3 n6 P4 K" d
  25.         SetEvent(sleep->eventHandle);
    0 V$ [! i; w  L4 \4 K4 |9 N+ g

  26. 3 w* L/ z# R. Z4 ~1 U
  27.         return 0;" V3 `. d$ ^$ n+ q) ~5 L4 x9 M8 n
  28. }
    2 g3 W' |7 S. d$ R; b9 b3 W

  29. ( u5 i! E( |4 l  y) v0 g
  30. //////////////////////////////////////////////////////////////////////4 T5 e5 T5 L9 _* i3 I! T# D
  31. // Function  : XSleep(), y9 {- V, K. Z* `  F6 }
  32. // Purpose   : To make the application sleep for the specified time
    ) A% |8 f5 v% i1 y1 n5 J
  33. //             duration.8 e& }" I2 w0 q( I; V; J$ ]
  34. //             Duration the entire time duration XSleep sleeps, it: w( |# o* E% ^
  35. //             keeps processing the message pump, to ensure that all
    . f2 x' f; }2 |1 R$ B, N
  36. //             messages are posted and that the calling thread does; {) t$ d# _8 }- ^4 R) E
  37. //             not appear to block all threads!5 A& `  A! s& t9 f. W
  38. // Returns   : none
    " D' G- B4 I7 R$ ]+ X: l" m8 @
  39. // Parameters:       $ W7 G* d& ^& `, `6 }+ L- H+ H$ ^$ s
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    ! Y' @3 h9 L( `; O& P) v
  41. //////////////////////////////////////////////////////////////////////9 Z1 F+ _+ D' _; O- w+ F
  42. void XSleep(int nWaitInMSecs,int nAscll)
    9 L5 y8 L3 H# I) u2 p& V- L+ _
  43. {
    * o/ b  ?- b* T4 k* s
  44.                 # A8 m3 z! L$ R$ W
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
" k, x+ d- F) L( `7 u

, k* q1 @0 T- Vxsleep.h文件代码
+ z/ R5 _3 \% Q, o  Y% K, p7 ~1 _6 p' @
  1. //Download by http://www.cncml.com
    0 @3 F; h5 O. _( f0 z3 i
  2. #ifndef _XSLEEP_H_5 h! y. ?9 d7 f( d, y, y; Y
  3. #define _XSLEEP_H_
    " K, ^8 Y6 \0 h3 n

  4. 1 K; ~" Q  d' g5 r
  5. void XSleep(int nWaitInMSecs, int nAscll);
    9 V0 O$ M7 \4 \/ {. b1 ^
  6. ( s- z. {) T2 {) N1 e1 _1 v6 }6 S" Q1 I
  7. #endif // _XSLEEP_H_  E% H+ H- f2 `) c4 C3 [6 v9 y( W
复制代码
8 p2 B9 C  \1 ]( T5 Y$ b& F

4 o+ x# i0 V' v7 P$ jmfc中的调用代码如下+ K* h. D; v$ X
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

+ B* q% m  ^# z# |  j. G3 y+ ^/ u: ?. X- ~8 G; @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:46 , Processed in 0.066689 second(s), 20 queries .

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