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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
+ M6 ~+ e9 r8 I- |建立 xsleep.cpp和xsleep.p文件
) m' G4 ]3 P0 a; n: _* q5 {9 sxsleep.cpp文件代码如下
' f% u5 P# D8 q, F1 Q. V8 a
  1. //Download by http://www.cncml.com
    9 ~* h: Q! I( Y; d2 ~
  2. #include <windows.h>
    % G7 K3 z: z3 p7 N6 d# D) I
  3. #include <stdafx.h># G' a9 y8 U0 I2 j# ?* C
  4. + E  M) S" M9 a/ X
  5. // This structure is used internally by the XSleep function
    ; e* ?( ?% P+ R& L* w$ Y
  6. struct XSleep_Structure
    7 F) d+ |5 J; m1 x- }% s
  7. {
    / Z/ d" c2 Z' t' p
  8.         int duration;
    ! n/ A' X& X2 g0 C5 u. {
  9.         HANDLE eventHandle;9 L0 W& W$ a7 Z- A
  10. };+ G9 T, a4 s9 {" O( D- L

  11. 9 F1 M7 ]/ [( Y9 D# x- H" m

  12. 7 t, i' @1 L; P1 _
  13. //////////////////////////////////////////////////////////////////////! N0 W" T7 @+ z8 T7 \* w$ v+ L
  14. // Function  : XSleepThread()6 a4 K: C8 s7 x: I
  15. // Purpose   : The thread which will sleep for the given duration7 B0 E9 M- B; H9 ~& o
  16. // Returns   : DWORD WINAPI
    ' J- K$ K' h/ f: `' _
  17. // Parameters:       ; @+ \: q% h. S
  18. //  1. pWaitTime -+ K* T' D- I' o9 l  C& v  a% q
  19. //////////////////////////////////////////////////////////////////////& f, |5 i3 t. W, `( z& Q6 i
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    7 g4 r" n" `( ~+ }7 g1 Z3 T
  21. {1 [$ }  c' Q( x* V
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;8 f" f+ Y3 X* M2 c8 x  ]6 T- f! s

  23. 1 T. J1 N+ o9 z
  24.         Sleep(sleep->duration);2 r' ]  _& x! I5 B7 |1 N
  25.         SetEvent(sleep->eventHandle);  W5 N6 u  [" t# F; S6 ^

  26. 3 j' v* W! c( L. q/ ?
  27.         return 0;) ]9 ]+ F4 e: J; y) n1 [5 l, N
  28. }6 M' o$ f. D; h) X: F

  29. 7 @; n- m! {. v
  30. //////////////////////////////////////////////////////////////////////' e! ^# e2 ?- B7 J) Q
  31. // Function  : XSleep(); F: C5 u% n$ K% V) }* d
  32. // Purpose   : To make the application sleep for the specified time
    . k/ F' Z+ g. S6 Y" U, u
  33. //             duration.. y6 @3 i* `6 l0 C6 F
  34. //             Duration the entire time duration XSleep sleeps, it
    ( h# V" G. G6 _$ u/ k/ ^+ X; V8 b+ l6 i
  35. //             keeps processing the message pump, to ensure that all: `6 k2 m6 g7 |: e7 U
  36. //             messages are posted and that the calling thread does
    , y  V1 I. R+ j0 R7 l! Y7 P" Z
  37. //             not appear to block all threads!. G& E3 p1 m; U, I" ?+ b$ Z; g/ |
  38. // Returns   : none6 t- u5 D5 v6 ?+ a$ M/ q0 X: @
  39. // Parameters:      
    ) K; Q. G, h3 G  e5 r! O
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.% _$ N+ ?$ ]8 Z
  41. //////////////////////////////////////////////////////////////////////
    - Z7 T0 h; R( f; F/ V+ I( \* m
  42. void XSleep(int nWaitInMSecs,int nAscll)# T- ]9 b  O9 h% f# z8 y0 S
  43. {
    8 P9 S5 M+ Y' I8 M9 D1 g
  44.                
    7 k" W+ [' g- h  s4 J" J
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
+ ~7 k/ g/ _- \1 A) o2 w
( m) d. ?  W! F
xsleep.h文件代码
! n; ~( `# d' q8 ?4 K5 j0 X6 e& M- K$ g
  1. //Download by http://www.cncml.com( _' s; L' a3 v
  2. #ifndef _XSLEEP_H_
    6 m& {' o1 o' \! R
  3. #define _XSLEEP_H_% z6 T! U# J" A- m
  4. 2 \' i( Z3 w* P. G% A! z
  5. void XSleep(int nWaitInMSecs, int nAscll);# w1 L  }( t2 z( B; n
  6. & W$ ~* g, y1 N" @8 s2 v
  7. #endif // _XSLEEP_H_
    ! V% k! c( w$ k1 S% [7 q
复制代码
  b( Y5 k4 {# M' V" g! S
* H5 ~' {; r+ t% A+ G
mfc中的调用代码如下
6 g8 b- [2 H! t* V/ S) \1 d( p
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

5 l0 |3 Z/ e6 m: q( X7 ]0 _. g. X' S* B$ B0 C! {9 H# Q% \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 19:01 , Processed in 0.051677 second(s), 19 queries .

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