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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
方法如下
! R" Q1 V+ z( a& u0 O3 U- h建立 xsleep.cpp和xsleep.p文件
1 C2 u! ]  a( a4 m  f; X# C7 sxsleep.cpp文件代码如下
. B% B5 y7 j' [9 f  ^) @" I
  1. //Download by http://www.cncml.com
      i- i" d% d5 Q
  2. #include <windows.h>
    - d- C' T% n; p. y& }! z
  3. #include <stdafx.h>$ E+ K: d4 Q( U7 ~% Y
  4. ) L; h4 s: U' C; ~
  5. // This structure is used internally by the XSleep function
    & U" l# E8 M' V  y/ a1 O0 Y: t
  6. struct XSleep_Structure
    8 m; p2 H: k, D% r) I( o+ A0 N
  7. {+ V/ S) G" \- l+ Y: t4 j; q
  8.         int duration;
    0 S6 B5 D5 |9 }% Z7 |- _+ D
  9.         HANDLE eventHandle;: N  g# P' V) |4 O' t
  10. };
    9 L, B4 s) G' s: P  _8 y

  11. : f- |" i# A4 [; s9 a2 k. ]

  12. 8 O; m; Y5 R( H& y% M' }# D0 F
  13. //////////////////////////////////////////////////////////////////////8 U# F7 P2 v" n% k( L! @7 F
  14. // Function  : XSleepThread()
    , q1 F, J5 q. M0 Y9 ~
  15. // Purpose   : The thread which will sleep for the given duration8 a9 S. t: p$ E# U; I9 f8 k1 U
  16. // Returns   : DWORD WINAPI% u( d5 ^- I5 {3 m  [* z
  17. // Parameters:      
    0 e2 ]% C! @! B/ u8 e6 [& E
  18. //  1. pWaitTime -
    2 x8 h7 c' c/ z; s2 D7 V8 _
  19. //////////////////////////////////////////////////////////////////////
    # |9 N9 ~- Q/ H/ U7 n
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
      ~, k1 L0 y: U6 x2 S/ N9 z0 n% J2 R
  21. {
    ) f/ a' W2 |& L6 H# s
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    % p% l$ m, r2 G; d$ n) X8 F

  23. # E* n0 e, V+ v3 B  B: a0 |+ D
  24.         Sleep(sleep->duration);0 a( M2 ^  T& }4 ?
  25.         SetEvent(sleep->eventHandle);
    5 j, K1 w" v- x
  26. + [- Y" n% s; f  ~
  27.         return 0;$ M& c# @5 ~- u* h1 j& R/ l4 T
  28. }% I. X% c& }; N. c$ p3 |# e. Q
  29. " c7 ~9 C" g9 w3 x# `, H9 M
  30. //////////////////////////////////////////////////////////////////////
    2 ~7 |8 q( B- y; x9 N2 c
  31. // Function  : XSleep()
    # t7 o% r2 P, k; @* D  M0 v
  32. // Purpose   : To make the application sleep for the specified time
    , O. x* ~0 J/ t
  33. //             duration.7 w) _" x& J  q% _  C) ^# B8 v9 D4 c3 I
  34. //             Duration the entire time duration XSleep sleeps, it# l) ~7 x! c+ {; R
  35. //             keeps processing the message pump, to ensure that all$ P% V( A0 n0 w+ P7 R' |
  36. //             messages are posted and that the calling thread does
    # v4 r6 Q$ ~& y  y; E, A' a, {, P4 c7 D
  37. //             not appear to block all threads!- H  S. x) i2 ~
  38. // Returns   : none
    5 \9 Y: k7 r, |$ w/ q
  39. // Parameters:      
    ( T, T! u5 b. F  K. X2 [
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    # F# g6 v  Z. S9 Z$ Z
  41. //////////////////////////////////////////////////////////////////////: w2 D7 H3 G- c) a; z2 \- f
  42. void XSleep(int nWaitInMSecs,int nAscll)
      G3 P, X) X3 O8 h
  43. {
    8 b- Y9 l6 Z1 I/ K/ d1 `" E
  44.                
    8 f0 f- g$ X% @5 A( I
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

. L5 o- {) y+ s% G+ g
8 l  E, d5 @7 F+ ?( Bxsleep.h文件代码
, Y# G  {" `  Z! _: J# Q
3 i( {- X% ~0 g# r1 M) E' Z
  1. //Download by http://www.cncml.com
    ; v9 G6 z0 ?9 }0 c/ q
  2. #ifndef _XSLEEP_H_
    9 r& E) n! \4 n, R! v
  3. #define _XSLEEP_H_
    " b4 `( ^  _6 `* H
  4. + R. E& |: P2 U/ I) O, [2 a
  5. void XSleep(int nWaitInMSecs, int nAscll);
    3 Y/ m, D8 a1 m

  6. 9 a6 n, R9 r# b: N* J: }" {0 b
  7. #endif // _XSLEEP_H_! Q3 D# |/ S6 I2 H
复制代码
/ c" r- [7 B6 t$ [( _

8 n  H; u/ I5 F, g5 \mfc中的调用代码如下, |* I0 a4 M8 s( P
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

0 A; ~- [$ t, M( N3 c% S" R+ {% ^* {% y8 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 15:13 , Processed in 0.116415 second(s), 19 queries .

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