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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下- K8 A$ u- G9 U; `4 ~8 m
建立 xsleep.cpp和xsleep.p文件
' c/ A$ N# B! Z% F4 t! {xsleep.cpp文件代码如下3 I1 o* n' }( V
  1. //Download by http://www.cncml.com, |0 |1 [# e! R3 {: N) a; ?
  2. #include <windows.h>
    ) }" N( R* H" Y2 }  H6 i0 N/ b
  3. #include <stdafx.h>
    " S! j$ `& J, Z  i

  4. - d2 ^# y' C# `/ o8 _% s8 ~
  5. // This structure is used internally by the XSleep function % s1 `4 ^% R" N. J0 X  z6 g# G
  6. struct XSleep_Structure8 m  i# \9 Y- u. \' r7 u
  7. {
    % q( a$ g1 a/ `% w
  8.         int duration;# u8 V0 N& q  A! w8 [4 u
  9.         HANDLE eventHandle;) R2 g( u& b) ~1 g  q0 Z. T6 q8 e- X4 m
  10. };
    ! |, ^1 a5 C: |- _
  11. , P  A1 d& I& v" n. {: C

  12. / _( ?" X8 g. L( Y, I
  13. //////////////////////////////////////////////////////////////////////2 I$ b* x1 X% f2 \) H
  14. // Function  : XSleepThread()) f; i' |: g& z4 I- d: U. k1 n
  15. // Purpose   : The thread which will sleep for the given duration8 K& \3 C0 W# y( U5 h, S: J9 f
  16. // Returns   : DWORD WINAPI
    ( h, _4 ?- a  q. l
  17. // Parameters:       1 Q  Y% F, ?$ R0 y/ C. w
  18. //  1. pWaitTime -
    0 L: c3 _! T% j5 V9 f
  19. //////////////////////////////////////////////////////////////////////. ]2 E( e6 J5 Z" |3 h0 a
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    $ G) Z) ]% n( ]/ i6 @) B
  21. {
    6 ~# L- ?  W  r3 z7 T
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    * n5 M( L, \0 S/ f  U

  23. 5 d( Q  a4 ?8 O; m) r
  24.         Sleep(sleep->duration);
    2 ~( M0 Z! v* _! [; p  l
  25.         SetEvent(sleep->eventHandle);& B+ [0 ]8 N% _/ T

  26. $ A* _1 R9 |4 E1 D5 \
  27.         return 0;8 P  i# B9 I! \
  28. }
    " F; p; }: i; f5 b: ^. V- y4 r
  29. " n% F# O7 ^6 I" A( E
  30. //////////////////////////////////////////////////////////////////////
    % y2 ?' x  L1 {# t! \9 y
  31. // Function  : XSleep()
    8 Y3 J0 q0 H6 {4 M* f; {6 ?
  32. // Purpose   : To make the application sleep for the specified time
    ! D: b5 x* S9 g4 L
  33. //             duration.
    0 a4 ]9 _2 V# r4 @3 ?
  34. //             Duration the entire time duration XSleep sleeps, it6 ]" H3 h  O, x: X
  35. //             keeps processing the message pump, to ensure that all
    / E3 L/ w: o3 u) y* |
  36. //             messages are posted and that the calling thread does1 F( Q( E$ I9 A& Z
  37. //             not appear to block all threads!
    % ^$ \1 a# G: G) q3 y
  38. // Returns   : none
    - x" B& _8 x9 m( `
  39. // Parameters:      
    0 D7 X' i2 V, n! P* O2 E4 k  B8 N
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    % D) u( z. O4 M# S' r- ^/ K
  41. //////////////////////////////////////////////////////////////////////
    6 v" |6 [. G/ |. m+ h+ F
  42. void XSleep(int nWaitInMSecs,int nAscll)
    $ W. ?& N6 a( q: @/ }
  43. {2 b4 `. Z" \; J% y
  44.                
    " K0 C1 `$ m3 X& X1 _
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
9 K, u  w' T- s5 b

3 L4 s+ y- z' Qxsleep.h文件代码" m5 N: T9 Y; l# _
3 B! V* s/ {7 F: J3 C4 p
  1. //Download by http://www.cncml.com) V% |, u6 G4 w4 h( e0 g
  2. #ifndef _XSLEEP_H_4 ~: `' D% {: W* N; t/ z( B
  3. #define _XSLEEP_H_
    # Y- G% p( U: u8 c% g+ H

  4. " m4 F4 a4 ?0 [0 K6 Q
  5. void XSleep(int nWaitInMSecs, int nAscll);
    1 t$ @8 |% j4 V( G3 S8 O# r. y, B

  6. : Q2 u2 J1 I! O# m4 _. @
  7. #endif // _XSLEEP_H_
    7 Y) u$ u0 w6 d
复制代码

( q0 n& p/ D6 `9 z9 G% [' O
( d& D8 E) p3 o4 mmfc中的调用代码如下
6 I: E, n2 m% V
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

/ ?; F+ W) u7 n+ E7 w6 ?3 V
( l& c* F- s( W2 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:40 , Processed in 0.055678 second(s), 21 queries .

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