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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下% `( ^- r% \3 W, B
建立 xsleep.cpp和xsleep.p文件
7 l6 T9 m5 Z/ N  N7 uxsleep.cpp文件代码如下
# C+ d% w; L  I. \
  1. //Download by http://www.cncml.com
    % |# S/ r) p; g, v
  2. #include <windows.h>
    & Q% w6 J) g) a# L+ ~9 X, m
  3. #include <stdafx.h>
    7 F  |& d0 W+ w; z$ @
  4. : f8 s. J( L. X% v
  5. // This structure is used internally by the XSleep function % k5 E$ R7 D2 a
  6. struct XSleep_Structure
    + t' u- Z, ~' G# _
  7. {
    0 O* n! W7 k5 x$ `3 H% ]2 E
  8.         int duration;, G" F, M8 V6 W& x* ^
  9.         HANDLE eventHandle;- z. C7 {$ l0 `( M, E$ M
  10. };& S3 T0 P' M) `5 j) c. c4 w. b

  11. 8 P! `$ G7 e( p! L

  12. ' B/ B' v( K- C: d
  13. //////////////////////////////////////////////////////////////////////. K  {) |. i$ J0 K7 A* A9 m
  14. // Function  : XSleepThread()
    : y& H" c6 o' [. W9 W
  15. // Purpose   : The thread which will sleep for the given duration
      J/ ~( i' [3 b- k3 T& R
  16. // Returns   : DWORD WINAPI
    + F; A' g5 p! D0 s. {
  17. // Parameters:       ) v' h/ W3 o; ]
  18. //  1. pWaitTime -9 v& i1 v- g4 X% w$ P6 s" A# }. n
  19. //////////////////////////////////////////////////////////////////////
    ; @+ d3 Q9 p, B4 J. V4 f3 ?. H0 A2 n
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    7 x0 R7 C1 n( z3 v/ ~
  21. {! w- f; c0 T, X) ~1 |
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;- L$ v* }, Y1 U- {1 Y

  23. / q- V( T' E' L8 ~- Q* i5 S7 _
  24.         Sleep(sleep->duration);( ^0 W5 c7 F$ z4 f
  25.         SetEvent(sleep->eventHandle);9 w" s3 o, ?, [/ i( Y- N$ T

  26. 5 D# [2 d/ ~. {
  27.         return 0;
    " K9 \+ r; L! `- P- }' H1 e
  28. }- ~& g  i+ i3 W" ~
  29. 5 X# ]/ _' v7 K3 s0 }
  30. //////////////////////////////////////////////////////////////////////# u7 a7 c& a/ M  x' l1 C0 C
  31. // Function  : XSleep()
    : |% D2 Q! a8 [6 y
  32. // Purpose   : To make the application sleep for the specified time
    $ i/ h0 p# p4 `% a8 N% B
  33. //             duration.
    ' _5 l7 O$ `7 p- X7 o- F" Y, ^
  34. //             Duration the entire time duration XSleep sleeps, it
    / w" }5 g# @+ M
  35. //             keeps processing the message pump, to ensure that all
    . g1 I9 a3 u/ d1 D- Q
  36. //             messages are posted and that the calling thread does
      ^8 L1 I- d8 G1 h
  37. //             not appear to block all threads!$ p. f! k9 b* o& R6 x/ i
  38. // Returns   : none* _$ D! O. t5 u6 I+ \! F
  39. // Parameters:      
    8 y3 q2 c2 ]  }3 n. l9 l+ x
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.8 |9 z% B& N9 @2 a& E4 O
  41. //////////////////////////////////////////////////////////////////////
    & s9 y$ D5 w. y% R' k1 ^! Z
  42. void XSleep(int nWaitInMSecs,int nAscll)6 f; V" q$ b, P" A5 m
  43. {" |/ G- V; I1 d6 H. ~
  44.                 + p1 \% o( f, O; [( m
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

/ N* X& g, H- M; G' Z  ~/ W% P9 f! Q+ q% x# u0 |  D5 f! w
xsleep.h文件代码
" @1 p9 y9 Q, B3 ~/ z3 p: T, z7 F$ z+ K! J& Q- A! g: i
  1. //Download by http://www.cncml.com5 U' x8 O& ^4 i, \' W
  2. #ifndef _XSLEEP_H_
    ' w/ r8 j9 P8 Q
  3. #define _XSLEEP_H_: x, H5 _; n% c% `

  4. , g& l( p# H+ z) q4 ?0 E6 A) D
  5. void XSleep(int nWaitInMSecs, int nAscll);: c. J! [9 }' k  t- |! I

  6. " |; X3 T( H8 r9 \) H$ M% ?
  7. #endif // _XSLEEP_H_. k, u: r( U2 U# v" g" y2 H2 Y+ V
复制代码
+ c" A8 g2 j, e( }2 S
5 g! ^# L+ e" E
mfc中的调用代码如下8 h# s$ [6 B6 ^4 C, {
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
' p5 ?9 E& m1 r( c3 O0 u" F- i4 _2 y1 _

& K: e- A0 @$ G6 X0 ?! ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:42 , Processed in 0.054490 second(s), 19 queries .

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