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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下$ V( u" b' {) r8 w
建立 xsleep.cpp和xsleep.p文件
3 o/ p) n' J' e& J5 ^3 ]xsleep.cpp文件代码如下
: h: ]1 S8 _( p# n5 j. t
  1. //Download by http://www.cncml.com2 E, M: Y1 S- l. |* }# Q* Q8 }
  2. #include <windows.h>
    : n. |  }0 G  s
  3. #include <stdafx.h>
    $ G! q) G% y% J! F6 Z
  4. 1 k$ h4 ?+ m  X8 }2 d
  5. // This structure is used internally by the XSleep function
    : g" E3 B$ ]/ ~9 D
  6. struct XSleep_Structure
    6 Y+ u7 t5 f& k6 h' `4 ^0 K
  7. {! Q. @! \" F9 S& e  m0 T
  8.         int duration;
    + a% j. J  ^, ^$ `1 a+ n& X
  9.         HANDLE eventHandle;
    $ y1 H7 I6 Q9 ^# x! e$ p# D
  10. };
    7 j4 o! f. P; |8 q4 b  y  k

  11. 0 e3 H  p* y/ Y& F$ k  f) c# _  b- k

  12. # e$ g8 t4 P3 I3 K; s
  13. //////////////////////////////////////////////////////////////////////5 ]! D; p6 V% m
  14. // Function  : XSleepThread()
    3 x7 d3 v1 T' B
  15. // Purpose   : The thread which will sleep for the given duration% R+ L* {& ]1 `. @4 c( D. @
  16. // Returns   : DWORD WINAPI4 q) c. T* R9 I+ R! ]9 h- H5 @
  17. // Parameters:       % ?/ _7 J1 N2 S2 Q; E* k( e
  18. //  1. pWaitTime -; M/ l# `/ K% m! G( X1 x7 f
  19. //////////////////////////////////////////////////////////////////////: G1 W  u$ N# l' y7 {3 |% [
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    & i: a+ v) y4 Y+ ?
  21. {% Q" V6 e$ g0 i: l  r
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    ; b3 V- h9 c" G# {0 f
  23. ! l, E% ]1 d+ ^  P- A
  24.         Sleep(sleep->duration);
    2 ^7 [% Y7 w$ R5 q
  25.         SetEvent(sleep->eventHandle);
    $ [( J& E/ E$ ]- u& `6 _

  26. & x8 A2 m" ?' {5 x4 M  J
  27.         return 0;" p. V- d5 R) G) J! P( |
  28. }& p! a1 P9 A! g: n8 i3 A2 b0 Q3 L4 \
  29. 3 n: E+ Z; n9 J9 I
  30. //////////////////////////////////////////////////////////////////////
    8 b7 q# G1 m4 n! B
  31. // Function  : XSleep()
      i( O  q9 y$ u
  32. // Purpose   : To make the application sleep for the specified time$ o- ]0 q) ?& s
  33. //             duration.
    " s, G' Q. H, W2 Z4 A
  34. //             Duration the entire time duration XSleep sleeps, it
    8 G, x9 K$ A* T$ I
  35. //             keeps processing the message pump, to ensure that all; y9 u9 V! v- Y; f8 S3 D+ v, \
  36. //             messages are posted and that the calling thread does% c5 K6 ^$ P/ i
  37. //             not appear to block all threads!8 Z, C: I& k/ o. V3 y
  38. // Returns   : none4 o( U" w0 K  R
  39. // Parameters:      
    9 F) Q. g8 ~: Q. Q. [% V; G( }
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    $ K! H' _7 e+ f/ ~
  41. //////////////////////////////////////////////////////////////////////; }* w3 G- Z. H9 r2 c! q
  42. void XSleep(int nWaitInMSecs,int nAscll)" `9 y$ O8 L# P9 `
  43. {" w2 [" D/ e% V5 ?( m
  44.                   }( K( p+ h+ e4 r
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
' G0 }  {0 F- ?
; I3 g4 k- S* ^+ Z; c1 o
xsleep.h文件代码9 L9 P  B  Z5 l6 f5 _# B
/ S" b1 P: [' p3 N
  1. //Download by http://www.cncml.com
    ; d3 Z" y( ]+ b! i+ Y) F" [
  2. #ifndef _XSLEEP_H_3 J( J# A: Z. T" D
  3. #define _XSLEEP_H_, n& ^& n) G) X- i& s
  4. ) Q/ `! y, u# h$ o
  5. void XSleep(int nWaitInMSecs, int nAscll);
    ; S0 O2 t8 z4 F0 r9 _  \

  6. ; l" z# |1 o! U4 o7 w) y' T, ?
  7. #endif // _XSLEEP_H_
    : }+ s8 r) Y& h* v5 B8 Y# n
复制代码
* ]! }, x7 g% i, V9 K
5 b5 D, S. C  |5 o- A9 M& j+ }5 c
mfc中的调用代码如下
9 `8 }: E# c& a8 W
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
+ G# J' p$ e: A6 w3 {1 r$ H
5 u, Z4 S  p! _5 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:23 , Processed in 0.067963 second(s), 20 queries .

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