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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下6 h% Y3 D, F. ]- x. j5 s0 j; d+ g
建立 xsleep.cpp和xsleep.p文件
$ B! U5 @5 ]; t6 N1 V/ Kxsleep.cpp文件代码如下
. c) Y: D0 b& j# M1 M% s& Z
  1. //Download by http://www.cncml.com6 m1 }# ^& M( ~0 a* M7 W
  2. #include <windows.h>
    & Y( D! ?; g1 \
  3. #include <stdafx.h>) i4 |- W! x! L: K2 _4 e* \( F0 `

  4.   |  Q! }( e. [+ A1 u9 a4 X
  5. // This structure is used internally by the XSleep function : a! V% `* `* ?
  6. struct XSleep_Structure9 f3 U1 z, H( U' B4 c' |) j
  7. {, }, E  T6 D7 H$ c+ K$ w3 J' z
  8.         int duration;* |) f4 z9 T% n
  9.         HANDLE eventHandle;+ L4 o0 c0 i) O- Z! d+ m
  10. };' ^) K2 S) j: H, L

  11. ' S: D& j9 ]! ?0 P( Y% `/ k' X# Q

  12. ) e# t; t  l  ^6 j5 u
  13. //////////////////////////////////////////////////////////////////////
    ' C3 k% }/ b5 i! M6 [, e
  14. // Function  : XSleepThread()6 [" e/ z4 [8 W: b
  15. // Purpose   : The thread which will sleep for the given duration4 v, e, W* d- @: a+ p
  16. // Returns   : DWORD WINAPI
    # g6 n* E1 J! M8 b! s* B9 i
  17. // Parameters:       % T8 x5 I7 N/ {0 K0 n8 x9 H* m
  18. //  1. pWaitTime -6 V# n  R& @5 K' W# W; L& \
  19. //////////////////////////////////////////////////////////////////////) r" f! w* C+ P0 v9 H3 U  p
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    ! [1 L+ g+ U- ^2 G
  21. {
    - W  l# v0 m* a& V9 c
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;: T& r1 Z0 S' A* ~

  23. * @7 p, L) K/ m/ j: s4 V
  24.         Sleep(sleep->duration);
    7 {4 Z" D" F. N( {% ]8 V
  25.         SetEvent(sleep->eventHandle);0 O7 n( \1 |9 ]% x6 Z2 P

  26. 4 `  d/ m  }1 C0 I
  27.         return 0;$ d1 F0 \+ {" p. R- l
  28. }' q4 x/ u' G- j; i. X

  29. $ n0 O1 {/ g2 J- v9 ~: j
  30. //////////////////////////////////////////////////////////////////////# ^7 U# P& r( l# n' d* J' [
  31. // Function  : XSleep()
    0 [* B3 _, ^7 Y, G2 Q$ J2 \
  32. // Purpose   : To make the application sleep for the specified time
    , U- a* T8 w' S4 z% Y; O7 W
  33. //             duration.
    3 t' o+ x' ^# n. M/ i9 O
  34. //             Duration the entire time duration XSleep sleeps, it
    : z, H: d7 B+ M- L! L. p
  35. //             keeps processing the message pump, to ensure that all
      K! ?2 m6 r8 m/ {: @$ I
  36. //             messages are posted and that the calling thread does
    - O( A5 L: i2 o) H' P4 H
  37. //             not appear to block all threads!
    , R( Q# b+ _# `7 ~9 h
  38. // Returns   : none$ C1 f* e+ R* {5 ^) l  R# B
  39. // Parameters:      
    7 N' `, j+ ~) V1 E8 _
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    + Z) M# o- T; B; R9 r
  41. //////////////////////////////////////////////////////////////////////3 ?- L  U& X! C: g
  42. void XSleep(int nWaitInMSecs,int nAscll): L9 r! n( B; T3 G
  43. {5 A9 \  K, V6 G. |6 C6 f
  44.                
    $ g+ V  U2 B1 A# C2 ^) u
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

" a* e4 J2 q, K5 d2 R
: r5 a3 j$ ^8 kxsleep.h文件代码- u. Z2 |# r2 w9 }& Q

. N+ F( \5 P2 ?& d
  1. //Download by http://www.cncml.com3 E7 ?1 c7 K  P' m
  2. #ifndef _XSLEEP_H_
    ( n, ~* s: s, ~' T' T- S0 P
  3. #define _XSLEEP_H_
    " w$ Y) j# ~8 J2 Y7 X+ g6 }

  4. 9 k0 y1 A3 s- ^' a2 R
  5. void XSleep(int nWaitInMSecs, int nAscll);
    / {3 W, B* V8 m; i# M

  6. 2 C2 Z) P3 `- E1 t
  7. #endif // _XSLEEP_H_
    , y( I7 E# O9 a" h$ J8 Z6 s
复制代码
2 d$ o4 @0 a2 G3 r

) k3 ]8 `( T; H9 ?- Fmfc中的调用代码如下: i/ s$ x% I( N. }
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

1 u4 F1 I( ?$ N& f
8 Y3 m" L, L( j" {2 }9 q( Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:25 , Processed in 0.136585 second(s), 22 queries .

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