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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
( n4 \% a+ ^# X  O. h建立 xsleep.cpp和xsleep.p文件  ?7 O) ?+ Y* d: V4 F" r8 ?
xsleep.cpp文件代码如下
- \; m/ s4 q: M
  1. //Download by http://www.cncml.com: Y% Y. p/ w8 i. }
  2. #include <windows.h>
    , ~! F( e% e9 F9 G) M. y, k8 C
  3. #include <stdafx.h>5 w5 X# p3 Q4 ]# b
  4. ( h! v" J, Q; d3 ?7 I$ O9 i
  5. // This structure is used internally by the XSleep function
    . Z/ F6 J6 K7 f
  6. struct XSleep_Structure
    , q5 m; C) }- C! J
  7. {
    8 {" O2 i3 r5 j, C" l5 K* i& Q
  8.         int duration;
    9 V1 r  I& z4 Z; h& D
  9.         HANDLE eventHandle;
    3 w: R) ^7 h8 y* Y) _7 x
  10. };
      b, p7 s$ L3 m2 ~

  11. ; Y2 @+ S" v* m) l

  12. 2 q4 S$ \1 m% u% _. @& }# b
  13. //////////////////////////////////////////////////////////////////////
    : V* r. d( d$ N
  14. // Function  : XSleepThread()4 w/ m  o# i; h- X9 r9 h5 A
  15. // Purpose   : The thread which will sleep for the given duration
    ' l: Q; c3 o9 y
  16. // Returns   : DWORD WINAPI
    : s: P1 T& `  K% V; U: u
  17. // Parameters:      
    0 q+ W" b" M* Y( R# G( j
  18. //  1. pWaitTime -% b: l, B, L9 d7 P9 o. G. h( _, X
  19. //////////////////////////////////////////////////////////////////////
    7 X8 q2 P5 n- ]. s
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    % Z+ p2 Y! \* A& A! g) H
  21. {
    # N1 ]- a; ]% {) u. r  f7 X
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    % y1 F( v- \0 Z& {

  23. / y% j. A" h1 I, `# k' u
  24.         Sleep(sleep->duration);
    ! r, v- A& k8 ]+ ~  N
  25.         SetEvent(sleep->eventHandle);
    : n* c7 s, i  ?' m& P% A2 w
  26. 1 d( p# f- q8 m1 Y0 [" I. _
  27.         return 0;
    * _( C+ |* a1 A
  28. }
    5 c7 u- S/ ?2 G3 i
  29. * ^- c, i1 D3 {  P; U8 B0 P) ?7 V5 m
  30. //////////////////////////////////////////////////////////////////////" ]" T* }. i6 T& ~# P: N0 T! O
  31. // Function  : XSleep()
    9 G/ R2 }; r; v! j' r
  32. // Purpose   : To make the application sleep for the specified time
    * W2 p, R: |. c. _, I8 X) t- X5 s
  33. //             duration.
    7 C1 F/ {/ g8 _. h6 `/ `4 a9 _- e
  34. //             Duration the entire time duration XSleep sleeps, it
    / c) Q$ P5 @$ d$ z0 D' D
  35. //             keeps processing the message pump, to ensure that all8 ^. J# l9 d8 d; [) @
  36. //             messages are posted and that the calling thread does& c6 ~; R6 z  h0 K$ n8 a
  37. //             not appear to block all threads!3 O* e( F/ A( h
  38. // Returns   : none
    . n! e1 X8 T$ H) M  X
  39. // Parameters:      
    ; s, _, ~: p. e  M* m1 T
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    8 m% w' a0 _* `! E) K4 v! k! c
  41. //////////////////////////////////////////////////////////////////////) F; M) w$ A8 R1 {8 @
  42. void XSleep(int nWaitInMSecs,int nAscll)9 ^/ K/ `7 ~7 K) S
  43. {
    + L( r" A, y7 E$ f. ]
  44.                 7 c: `7 ?3 H' i4 w4 G6 U. x
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

4 V* Q$ ]' K4 O/ B) ?- T: J* W( A+ u' V, w
xsleep.h文件代码
% e" {) Y3 q# a$ x: _- B4 R8 ^& b; ]1 e2 p- J
  1. //Download by http://www.cncml.com8 O& m3 p4 I( C5 v6 ^5 f- o
  2. #ifndef _XSLEEP_H_
    : G; `( B$ S$ {: z7 }8 {
  3. #define _XSLEEP_H_
    " B+ V2 L7 i3 C# t" L' ]& i( ^& ~( a
  4. / U& @* p  m. x# Q4 s1 w7 u
  5. void XSleep(int nWaitInMSecs, int nAscll);& S7 V) U3 [* K; }! l- u

  6. 4 W4 j2 h/ C6 p$ d7 T
  7. #endif // _XSLEEP_H_
    / H! z- N# M  U- v% I# e, g
复制代码

: Y. ~0 ~0 i6 \' [5 \
  S/ y  p2 c: F* h) fmfc中的调用代码如下
! T! Y+ d8 x; U5 q; D( z( s4 L' ?! P
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

; R  g9 ~# H4 |/ k; R, Q1 S
! X" V: M& y2 w$ O! ^7 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 14:33 , Processed in 0.055948 second(s), 20 queries .

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