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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下' u( H. W8 Z  ~
建立 xsleep.cpp和xsleep.p文件5 a# o4 F7 z6 N  v8 H  h8 f1 K
xsleep.cpp文件代码如下
* @$ r$ j1 T! ?
  1. //Download by http://www.cncml.com" W" Q. K( o, [6 l* f8 U( J
  2. #include <windows.h>7 B3 {5 s3 v% d8 F6 G/ h
  3. #include <stdafx.h>$ m/ T# \" R% m! ^
  4. # m- ?1 \. X# n* O$ q! @
  5. // This structure is used internally by the XSleep function 4 o2 f( ]7 x2 g4 ]
  6. struct XSleep_Structure
    & m+ `4 F* s) l, S7 F
  7. {% E. I2 v: L* ~; D2 e+ F4 _
  8.         int duration;
    # F- m7 T& Q2 R& m$ n7 W$ m
  9.         HANDLE eventHandle;
    9 |1 w/ C; ~2 I2 y& L/ z2 U" {# \
  10. };5 g0 D2 H$ K3 L7 w, F% i

  11. % R& l% A- v1 u

  12. ) b( s( t3 h/ n" {# G5 _
  13. //////////////////////////////////////////////////////////////////////
    : E& f; |# }: f) L7 n/ _0 F0 U
  14. // Function  : XSleepThread()
    - Q1 u# C( L& t& c1 q
  15. // Purpose   : The thread which will sleep for the given duration
    5 a5 m6 F" y4 o, q
  16. // Returns   : DWORD WINAPI
    ' ^, k- h' @8 t9 @3 k* A$ D
  17. // Parameters:       + Z+ @7 H' Z: L  c' C" [5 v
  18. //  1. pWaitTime -
    7 g; k( g" W+ A8 \
  19. //////////////////////////////////////////////////////////////////////
    " k3 j$ _, i5 ~- s, m' _' h0 Q
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    ; I7 ?0 C  K, ^" Z& J9 J9 o
  21. {
    , S% N% O. R% o5 j
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    1 M( ^+ M& E& F
  23. 2 t  T6 x, s7 ^0 o' E3 z
  24.         Sleep(sleep->duration);0 G# e; c! v. g' P
  25.         SetEvent(sleep->eventHandle);
    % j* {6 v' K6 X4 W
  26. 3 m  x9 g. i2 ^( j, ^% g
  27.         return 0;
    ) j( r/ d! x! \& l3 S+ F
  28. }. K6 U1 ?. D. z8 S
  29. 7 c/ C  ?6 j& J" t1 R) ]& O
  30. //////////////////////////////////////////////////////////////////////
    8 s! V! r: @9 A3 e. E$ T! j8 p
  31. // Function  : XSleep()
    - \3 B, p+ ~; p- Q/ F% k
  32. // Purpose   : To make the application sleep for the specified time
    & Z# V1 E  L; d5 p2 b. i
  33. //             duration.' v1 E! {" O; y+ ^, i# h  e, o  A
  34. //             Duration the entire time duration XSleep sleeps, it7 R( p* H$ H( J
  35. //             keeps processing the message pump, to ensure that all. n9 n" D  D* O8 b* S. z" g
  36. //             messages are posted and that the calling thread does
    / N+ K7 W9 Y: P/ E: L- Q
  37. //             not appear to block all threads!) _. R, C6 \  x; E: ?  r- k3 `
  38. // Returns   : none5 G% ^* J% I0 U+ A
  39. // Parameters:       2 _- X/ H: l7 r' l" K& f
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.7 O3 k" p! _4 {2 D- |
  41. //////////////////////////////////////////////////////////////////////
    * @- `3 i! b! t6 {2 l6 ?, _/ |/ v
  42. void XSleep(int nWaitInMSecs,int nAscll)1 p3 Z( w) K5 Y  z
  43. {
    2 Y( P5 {1 _9 L" Q/ Y
  44.                
    2 ~! L5 {: ~0 Z1 C6 V$ E
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
% y" W6 I' n7 _
6 D: J, n9 z+ l! }* l5 g
xsleep.h文件代码
6 X2 D( X# P9 J1 x3 H1 b, G4 a- H5 f$ E* Q, ^5 X! Y7 h4 ], q* C1 Q
  1. //Download by http://www.cncml.com
    + ?/ R; m$ u+ u! z, H7 G; n' g
  2. #ifndef _XSLEEP_H_
    % q' b* ]3 x" @: X7 z
  3. #define _XSLEEP_H_
    : r" `8 h2 S7 E- y
  4. 4 w: |  ]  D8 C+ P
  5. void XSleep(int nWaitInMSecs, int nAscll);
    5 ~: c% x& l, p, H4 \. l

  6. : s6 ^, G5 b' f& w" S
  7. #endif // _XSLEEP_H_
    2 E% ]9 \5 l; k
复制代码

. R. T# Y  D. [! g$ ?) N$ ^$ S  ]# q6 ^4 k/ M
mfc中的调用代码如下$ \1 j: B" y' K' V# S
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
; j/ G& _2 Y; n, B1 ^6 z# r8 p  q

( H4 J. B0 g0 B- i9 S/ p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 00:01 , Processed in 0.054123 second(s), 19 queries .

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