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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下8 x7 s1 f0 O. t, Y* \7 ?
建立 xsleep.cpp和xsleep.p文件
* u$ k: }& W. _; ?: ]# Txsleep.cpp文件代码如下
  T# l$ ?& u4 W
  1. //Download by http://www.cncml.com
    8 D: C* k5 M) S6 W8 q
  2. #include <windows.h>
    2 ~/ P. z4 t* D8 a- ^! o
  3. #include <stdafx.h>
    - A/ ^! j$ `! |6 [

  4. + g3 I# p& Q$ i; t) i1 j
  5. // This structure is used internally by the XSleep function
    7 x- m+ c0 d" T8 X+ ~1 z: m6 Z
  6. struct XSleep_Structure3 N; _' j4 R6 _% W" Y0 r
  7. {( \; p) I7 j7 k
  8.         int duration;
    - {5 T; E; o1 r) J
  9.         HANDLE eventHandle;
    7 N+ W, d! T% \, p8 L1 m4 V
  10. };
    ) O, b6 |/ x9 F8 K
  11. 1 e4 W9 C7 h$ S+ o! j& l. J
  12. + ~2 Q, H% b' O# W. t: o$ v
  13. //////////////////////////////////////////////////////////////////////, M  \' W1 I0 k& T5 V; A6 [
  14. // Function  : XSleepThread()
    9 y0 y% O( I. Y6 j' ^% {
  15. // Purpose   : The thread which will sleep for the given duration
    3 A8 |. o9 R4 X3 @8 L
  16. // Returns   : DWORD WINAPI5 x, @# b" d# S$ `1 x
  17. // Parameters:       4 C2 {+ _, s& s% J4 c9 q. U
  18. //  1. pWaitTime -
    8 Q, k9 ^' `4 \7 s
  19. //////////////////////////////////////////////////////////////////////0 d6 m* x& a  u$ j: D; ~/ V  r
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    1 B5 T# {% U. J( q
  21. {, @) x/ D' `$ Z/ A5 t
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;3 X) v1 C" _# K2 D3 M0 a

  23. % j4 w1 X/ _! ^$ T* R. C6 B! w
  24.         Sleep(sleep->duration);
    5 \9 m& ]) L: a, q% z. o# Z
  25.         SetEvent(sleep->eventHandle);9 G. j. k  w- `% J

  26. ) D9 b& x4 ]0 m; n
  27.         return 0;
    : D' w  s4 R+ I) S9 h5 z
  28. }- J. i6 V. r+ m9 P" A5 F2 `6 P) h# ], @

  29. % J, j+ B4 w- r- }% h
  30. //////////////////////////////////////////////////////////////////////( b7 B9 G% Q2 B6 k  @
  31. // Function  : XSleep()
    ) ], N1 {9 a& g/ Y, {( D
  32. // Purpose   : To make the application sleep for the specified time: P( y2 S; ?; }+ \& r1 Z
  33. //             duration.% g& B/ x! Z  V- j
  34. //             Duration the entire time duration XSleep sleeps, it  s; N. p7 K: _' N2 d, C, B; C, l
  35. //             keeps processing the message pump, to ensure that all: [0 P" \- r' n5 }) ?- V. P
  36. //             messages are posted and that the calling thread does: d" |. v$ S: q  q4 r2 t/ @% p0 K6 x
  37. //             not appear to block all threads!& U; L% }/ p3 \
  38. // Returns   : none
    ; y; Q( W6 \7 @6 S: {) |! Q2 Q
  39. // Parameters:      
    3 J5 B+ l2 I( `: {! o
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.0 G5 U& C( f# K0 L( u$ G
  41. //////////////////////////////////////////////////////////////////////
    5 ~# C  q2 A2 l2 @' n; Z8 I2 `5 {+ v
  42. void XSleep(int nWaitInMSecs,int nAscll)5 A' ]3 P7 k( E3 R
  43. {
    ( m: b9 `+ X9 l; Y" x
  44.                 3 H6 ~5 ^: `5 H/ H7 `7 ?$ E3 p( `
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
+ X- k0 b2 e/ }
! @1 c) D. l" ]3 [% }5 h; L0 g
xsleep.h文件代码
9 F8 b) C$ M. B0 y" @- F+ F2 p  {. J$ @# U8 `5 Y$ y
  1. //Download by http://www.cncml.com
    9 p* f3 p" u1 b) n
  2. #ifndef _XSLEEP_H_
    8 ^* e: p" z5 s& y8 b
  3. #define _XSLEEP_H_
    ) E6 c5 h4 i3 ^0 h( q

  4. & x* o$ K; v: |* h! e9 F
  5. void XSleep(int nWaitInMSecs, int nAscll);
    8 I# a( G3 p  Q, Q1 n" ~, l' ^
  6. ; l& X! p& V: H/ Z1 p0 C# j! c4 i
  7. #endif // _XSLEEP_H_
    ' Y3 D( E+ g5 d
复制代码
$ B6 B" b% P& n+ D3 \  F

- T, s  ~3 C" I% ~mfc中的调用代码如下
* e( @! C* q1 N) ?5 l1 a
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

* l! B+ n. s6 R, n4 R$ {; D/ K# b! c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:13 , Processed in 0.115976 second(s), 19 queries .

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