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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下1 x" A8 N0 z9 h+ ]% D
建立 xsleep.cpp和xsleep.p文件
% [( d% g6 z5 ~3 G2 X  g" @xsleep.cpp文件代码如下$ p' X. c6 S! P& C  ~
  1. //Download by http://www.cncml.com
    0 l% q. C& e0 b
  2. #include <windows.h>
    2 G. d( ?' O$ W) T4 ]: ?8 \
  3. #include <stdafx.h>) u- P' u. f& L( b5 \

  4. + H( o7 \. ]5 O# h( V  [2 [1 W
  5. // This structure is used internally by the XSleep function - M4 E; X4 T8 J& N2 n% A! n
  6. struct XSleep_Structure3 \, O, {3 G/ y$ T4 g
  7. {! @* P! S( Q. h% D4 d  _0 X8 i
  8.         int duration;
    0 L4 C1 U+ |4 R8 Y* Q0 g* j
  9.         HANDLE eventHandle;6 Z3 D% a5 ]+ Y
  10. };
    5 D1 J6 B3 O( O9 s0 r
  11. 4 G' E! P  I1 I( h9 s: @  R$ c: b

  12. - g# p/ M; C3 C* I' `
  13. //////////////////////////////////////////////////////////////////////
    9 K& b3 v0 S* R3 L' e2 G) o
  14. // Function  : XSleepThread(); F: @2 \" g2 O; [5 G, h. E: U
  15. // Purpose   : The thread which will sleep for the given duration7 a4 E+ w: d0 E% k' p- H
  16. // Returns   : DWORD WINAPI8 C- R& h/ [" p" Y- y6 H
  17. // Parameters:      
    1 M" I6 `! Z; C+ S" R  U; G
  18. //  1. pWaitTime -
    & H! {2 R2 I: N" A8 B  |; C
  19. //////////////////////////////////////////////////////////////////////
      s% ?) ^# [5 K$ O- z$ R
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    / {$ i* [9 ^8 Q: ^
  21. {
    / F% h" a, b+ V+ K  O, d) x
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;7 J. v- y$ ^  n9 e

  23. / N' m4 j) T' ~& Y
  24.         Sleep(sleep->duration);; ]3 Q% U0 v9 z4 T
  25.         SetEvent(sleep->eventHandle);9 s0 s6 I' N4 J, G+ u- Q

  26. . a# A( ~8 O; r$ t
  27.         return 0;6 c; }5 Y( x  d3 F7 C" y: s
  28. }
    & G" e5 r7 k$ t; }
  29. 5 i, z2 `9 E* ]$ L
  30. /////////////////////////////////////////////////////////////////////// z5 l. I: U& P5 v
  31. // Function  : XSleep()$ {4 E. e4 v$ A3 R( U* g2 x9 b
  32. // Purpose   : To make the application sleep for the specified time
    " C  E. O- R5 g! ~
  33. //             duration.
    5 r& ]9 x% U) S" b, U( j2 Q
  34. //             Duration the entire time duration XSleep sleeps, it
    ! ~# @5 R$ A: ]5 P; }- W, v
  35. //             keeps processing the message pump, to ensure that all" s+ \3 ~/ N8 [8 X
  36. //             messages are posted and that the calling thread does; y9 u  i/ u# W1 z: g
  37. //             not appear to block all threads!, V* V0 ^. e+ M( |$ F& L
  38. // Returns   : none* i5 `. J" B# s$ ]
  39. // Parameters:       - g1 @3 z* ^( m! d0 F* Z
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    0 Z; O7 @4 v, P7 r
  41. //////////////////////////////////////////////////////////////////////
    ) X: h9 H6 w  {8 T7 ^
  42. void XSleep(int nWaitInMSecs,int nAscll): d- V" g9 R# Y/ @
  43. {
    , x$ r+ i2 V" g
  44.                
    ; J) {/ A& N/ Q, B  U  X" z" g
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

  g& f0 r+ x! R; h, u( C: i9 L* R: {8 B* `
xsleep.h文件代码
* n7 |2 V, H: R/ m7 n( c5 @0 `0 h) N2 |+ J9 \+ D0 j- u
  1. //Download by http://www.cncml.com0 n" l# a. n! `3 H
  2. #ifndef _XSLEEP_H_6 p1 K. a+ E+ V, S8 f
  3. #define _XSLEEP_H_/ S- e8 b2 }; p! u$ s
  4. ' h( y; Y5 ?- u& I! d: v
  5. void XSleep(int nWaitInMSecs, int nAscll);
    ! Q$ `+ w- k. V
  6. . }( n! S% T8 c% \$ V* b! g
  7. #endif // _XSLEEP_H_3 n0 |  y. a( w  l: ?" h! O
复制代码

/ W" F" k! p, P/ `* \# @" N2 B6 ]) a/ @# V8 _+ P7 I/ c
mfc中的调用代码如下- C2 Q8 w. L8 P- G0 }: f. b' P- D
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
' z& R1 v" Y  T6 V: B, A% e

8 [3 ?) w$ N" x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:00 , Processed in 0.058337 second(s), 19 queries .

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