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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
) T- E& V9 G  V建立 xsleep.cpp和xsleep.p文件
1 f& [; ]0 Q2 A$ P0 Z4 ?; Exsleep.cpp文件代码如下9 Y2 V8 j4 E: A
  1. //Download by http://www.cncml.com
    2 @' {5 g+ m4 ~
  2. #include <windows.h>& J) [. v* ]) ?# @) F& A
  3. #include <stdafx.h>, b; a3 L7 `4 k

  4. # i4 r/ R' h( H# Q. K. n, D+ e
  5. // This structure is used internally by the XSleep function 3 r; [" N" ?9 v$ g
  6. struct XSleep_Structure$ A6 B$ y& Z* i! Y
  7. {& L- n( t0 S" `  D( r' j4 M; [" h  ?
  8.         int duration;
    & b1 i: C9 r8 M. k
  9.         HANDLE eventHandle;" N6 K/ r# ~5 s
  10. };1 t: K2 i. \6 l

  11. ; N9 B# d! y% I6 Y$ C; t

  12. 7 _1 y4 E% q; W" O" d4 _3 u
  13. //////////////////////////////////////////////////////////////////////
    9 D  z8 a& r2 U, J0 o1 W
  14. // Function  : XSleepThread()# G% m; I2 o! D+ z$ L- g
  15. // Purpose   : The thread which will sleep for the given duration
    ' X" O6 x4 ]: [) i
  16. // Returns   : DWORD WINAPI
    5 B4 \- ~! s5 \( h# }$ F
  17. // Parameters:      
    8 p/ m; ^( S  c& P/ j! P  y
  18. //  1. pWaitTime -
    ) H- |" a  W, _* G. T& {  p" v
  19. //////////////////////////////////////////////////////////////////////
    7 X8 X5 C" [; H; k: O
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    % e' R9 {9 W. ]9 _0 H0 o# ?
  21. {# {: e- w+ a4 n! F# }8 E+ M
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    5 L- E! l/ f1 H( I$ l' d

  23. + e/ ^; Y& L3 ]) H# P3 t
  24.         Sleep(sleep->duration);( W% }* B+ N- A) ^
  25.         SetEvent(sleep->eventHandle);% ?2 `' s) L, d4 k1 b: O/ O" N
  26. 9 X/ ?6 T/ B2 d8 o
  27.         return 0;2 v2 J+ E( Y" n. k
  28. }
    + s, `! y. H7 V7 o. j! v: B0 y
  29. 0 O- f5 f2 u* x* f1 C& n
  30. //////////////////////////////////////////////////////////////////////& s) k" }8 @6 R% Y: r3 ?1 n
  31. // Function  : XSleep()- Z" c. m8 P, E7 l2 p
  32. // Purpose   : To make the application sleep for the specified time/ v9 C& }  O5 t1 W0 s' x
  33. //             duration.
    9 F7 U5 u& A' K  u
  34. //             Duration the entire time duration XSleep sleeps, it8 V" N; X1 a5 d+ y
  35. //             keeps processing the message pump, to ensure that all
    6 o$ s4 p$ B2 M: I$ p2 z  d2 m2 `
  36. //             messages are posted and that the calling thread does
    1 k) o( z- y% [7 R# o
  37. //             not appear to block all threads!
    % [1 ^1 }* }4 I* q
  38. // Returns   : none
    ) ?. W% g$ S. j6 q- Y
  39. // Parameters:       . P- ]4 t" b5 P9 f/ F- G
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.# \8 P* n' \: ^) ~8 l( s, N
  41. //////////////////////////////////////////////////////////////////////+ S( O' l; S1 I: Z' `
  42. void XSleep(int nWaitInMSecs,int nAscll)
    1 ^9 b" E0 Z) w8 u0 N
  43. {$ p, d1 I) C" C
  44.                
    6 S2 |) q' g: R) z" @& f( K
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

* h4 d: D; u7 f# N2 |$ I$ ~# [1 x+ N* ]8 I9 }
xsleep.h文件代码# n, ?( z7 |+ m( h( c3 p3 F! N3 G0 p
9 l! Y6 ]: u1 ]2 T8 K
  1. //Download by http://www.cncml.com
    4 B. ^" t2 C* j# W, i
  2. #ifndef _XSLEEP_H_# A$ F- M- }( a7 H7 G% T
  3. #define _XSLEEP_H_' _( h. {8 E. \! u4 y( K: D
  4. 7 q, t8 p7 ]: B  a' ~- W) {
  5. void XSleep(int nWaitInMSecs, int nAscll);! G; V" U8 @/ \) x4 E$ y

  6. ( a4 Z! Z. w& p4 V- `2 m) V. J
  7. #endif // _XSLEEP_H_
    & A' p- a7 o+ Z/ J
复制代码
: _! X& t, M+ z4 O' |/ _

7 b# U2 u5 ^  F- ?mfc中的调用代码如下  Z' E2 I7 U. B. C3 j
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

2 P* d/ _! Q! a
" v( y1 \. D* T8 I2 X) D: k( F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:06 , Processed in 0.052120 second(s), 21 queries .

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