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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下4 K. `9 A1 B; M# q( c+ g
建立 xsleep.cpp和xsleep.p文件
6 C9 ?* p* |6 B/ gxsleep.cpp文件代码如下  i$ J- |# m% O& x! f4 X
  1. //Download by http://www.cncml.com% ^2 t) L- [% o$ o6 \
  2. #include <windows.h>! v# c5 d) ~/ e$ ~
  3. #include <stdafx.h>0 \" |0 O6 l9 K4 q! \1 I: _

  4. 7 u6 \( M% {7 J4 v8 f
  5. // This structure is used internally by the XSleep function
    5 d- y4 i- ~, V# u# @5 ^2 g
  6. struct XSleep_Structure% J- f) W& p. Q; P8 A" T3 E2 w0 R
  7. {. A/ h2 j! l8 \4 d: g& z/ {
  8.         int duration;3 k0 @4 V. ]2 s* O8 _" r
  9.         HANDLE eventHandle;* a( D. U% `1 W0 b# M
  10. };
    % k6 e6 [" @! |( P+ M
  11. 8 q3 }9 q  M! l

  12. + Q1 _/ Y4 ]& c
  13. //////////////////////////////////////////////////////////////////////
    ! w  p6 P+ m+ e6 H% H) c  [
  14. // Function  : XSleepThread()
    9 p* J+ N' e, N  ?9 |
  15. // Purpose   : The thread which will sleep for the given duration
    " L+ Q7 v- x3 J4 F3 c
  16. // Returns   : DWORD WINAPI" F: I' D! u  g5 E- B0 Y
  17. // Parameters:       . I* V, @, j& R
  18. //  1. pWaitTime -8 A9 E1 e0 M, O0 i3 v/ W8 @
  19. /////////////////////////////////////////////////////////////////////// X4 J0 H, ]. `& S6 X! }
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    7 {3 J& R+ l0 Y' ~
  21. {# a( o) u3 c6 |. _/ z7 r
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;( H8 {6 D1 m* I# F% ^: v  V- r1 K/ C! b
  23. ( x0 \! R) M5 x' k
  24.         Sleep(sleep->duration);& A9 K5 J) G4 X4 n
  25.         SetEvent(sleep->eventHandle);
    ' u" t9 t) ^- l$ y% @
  26. * z7 a7 c+ l) q& y4 r
  27.         return 0;
    & K! ^5 ~! i2 U
  28. }% W& m7 ~( `, f  l  e# E6 I" f

  29. - _2 D0 |. U( p3 t' P; P
  30. //////////////////////////////////////////////////////////////////////
    0 }$ R8 T6 q0 o! _' ]
  31. // Function  : XSleep()  G2 Y% L- _) T  ~5 z; `, z
  32. // Purpose   : To make the application sleep for the specified time0 s$ S+ o+ P( f3 B! N
  33. //             duration.
    & E. }; m# |' }' b4 ^, _. R
  34. //             Duration the entire time duration XSleep sleeps, it
    4 G: B, J8 m/ \2 c! v/ C
  35. //             keeps processing the message pump, to ensure that all
    $ ?- O. @6 C- j2 W6 p
  36. //             messages are posted and that the calling thread does& Z+ S8 H' y& x  Y0 e
  37. //             not appear to block all threads!
    5 x& T, n  ~4 ?
  38. // Returns   : none
    7 }0 i9 _' ~' G2 I/ ~
  39. // Parameters:       ! y( j- H* g4 _
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    ; t+ @" W5 G6 t" l
  41. //////////////////////////////////////////////////////////////////////% N1 A' ?+ W$ I  h# o( k/ |
  42. void XSleep(int nWaitInMSecs,int nAscll)
    / w- k! `. h4 t, Z9 h
  43. {1 D7 |2 V- X! _$ t# N+ v9 F
  44.                 * c: i0 a; X2 S: {( N4 ~6 l
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

3 K% r+ n) Q( T, q+ ?- E3 n% w6 z  c9 {$ c* d. G, q
xsleep.h文件代码
. w/ R  X# d. @1 @; x0 T- m6 \0 f9 k5 n  \% a' r5 v/ O
  1. //Download by http://www.cncml.com
    % M( \+ V. T. G9 Z3 F; q% B
  2. #ifndef _XSLEEP_H_  `4 A  Q* X! y$ h4 e: n' \" [
  3. #define _XSLEEP_H_
      E' X$ Y9 |7 ]9 ]6 Y

  4. 7 n4 s1 d" N" Q- {/ F; r: V
  5. void XSleep(int nWaitInMSecs, int nAscll);
    : }9 R0 x/ \( `# F
  6. , t3 w& J# i# B" i
  7. #endif // _XSLEEP_H_" F: t) a, t6 M* A
复制代码
# r0 s9 ]* N) d% c* N' {+ `
4 ~$ b5 ~5 m0 Z. C
mfc中的调用代码如下% X, h( n. ~) _) n" }
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
& K/ B$ W+ D2 ?8 [2 c' }) W3 A) e
% C" M$ K4 ?' v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:19 , Processed in 0.056533 second(s), 19 queries .

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