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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下1 d( a  \1 A6 c6 |! t
建立 xsleep.cpp和xsleep.p文件2 N- `7 B) w3 s; F+ a" j" g
xsleep.cpp文件代码如下9 R4 v, W9 I! l1 d, n
  1. //Download by http://www.cncml.com- K( y% d! H3 B7 {& W% x2 Z
  2. #include <windows.h>
    4 K5 k: X1 |) X
  3. #include <stdafx.h>2 G" ^5 I; J- f# x$ U: V; }

  4. " ^+ D& X8 `; l& X: q' B
  5. // This structure is used internally by the XSleep function
    * l3 f( X0 ~6 e( M6 |8 g
  6. struct XSleep_Structure
    2 Q4 V& z1 i$ b+ u( S3 B
  7. {$ m+ C6 ^2 H" w# O3 V
  8.         int duration;
    ) O" T5 e2 t3 @1 F$ c- f, |
  9.         HANDLE eventHandle;
    + J8 b+ j% n& O, o
  10. };
    ; A& [, N# g% v

  11. & `' @" _1 E  b, k
  12. 9 ], P- C, f. p. W7 P
  13. //////////////////////////////////////////////////////////////////////; c0 l& x. m  T& w, r4 o6 ?
  14. // Function  : XSleepThread()8 {: D: `2 ]) d4 `
  15. // Purpose   : The thread which will sleep for the given duration( h, A- s# {; i  K2 m9 `/ l
  16. // Returns   : DWORD WINAPI3 C  m5 ?7 T' Q" ]
  17. // Parameters:      
    % z9 Q* e0 w  r, M) ?5 c
  18. //  1. pWaitTime -2 @! V  ]) {, n+ q, f: y, |
  19. //////////////////////////////////////////////////////////////////////
    ; h8 u# s  m/ m# W7 C( X
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)1 A" F( Q) ?8 s) U
  21. {0 ]; V( l" Y! `* b( k# C" W
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;" R$ A- [& z4 W5 t

  23. 7 f- {% @- I% W
  24.         Sleep(sleep->duration);
    ' i+ r5 J9 k3 j. x5 Q5 t! j% G$ n
  25.         SetEvent(sleep->eventHandle);
    8 A7 Y/ K9 y# W. v, h$ p

  26. * U0 ?1 e! _/ f! A+ J3 e
  27.         return 0;
    2 D( m: A7 ?" r
  28. }* Q( O* K3 r# i) ^2 A3 Q! k) P
  29. % c9 t4 i  M' T3 j
  30. //////////////////////////////////////////////////////////////////////" I; R7 \/ e7 @7 [
  31. // Function  : XSleep()6 B3 M, ^9 I$ T% {  m* o
  32. // Purpose   : To make the application sleep for the specified time) Y# O) ^5 n  C" F: _
  33. //             duration.
    & h$ f8 N! W5 f
  34. //             Duration the entire time duration XSleep sleeps, it
    % r) ^+ L' x4 T, P4 D2 I8 x
  35. //             keeps processing the message pump, to ensure that all
    / k# \2 N. |# b
  36. //             messages are posted and that the calling thread does4 l4 _7 m9 R. h( [( X) A' C  i! [
  37. //             not appear to block all threads!4 ]+ U' E! ^7 t& @- Z
  38. // Returns   : none) z( T2 T/ Y8 l6 Q1 q
  39. // Parameters:      
    7 @! S% g5 \7 U' K
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.( B( \- @7 p# O' x, f
  41. //////////////////////////////////////////////////////////////////////
    1 x0 w& T: H! M1 M- Q
  42. void XSleep(int nWaitInMSecs,int nAscll)! o! \0 m* \! S) I4 w, }% E
  43. {
    + P8 M' _. h6 O
  44.                
    6 \# d, j7 S, F
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

1 V4 }; k& `. F/ _8 m* j. A7 n$ `! [" u9 g# e; u5 c7 @4 x# T' h
xsleep.h文件代码
' j, C1 k8 g! F2 D
5 x" U- u* b) g4 N' z
  1. //Download by http://www.cncml.com
    5 _. x$ ]* b( z6 l9 z, ?
  2. #ifndef _XSLEEP_H_
    ; f' u  o; G0 a# r, c% \) ~5 h" t% X
  3. #define _XSLEEP_H_) G5 {, m1 M+ p! `
  4. . F. O# F/ m9 @$ j# ?3 R" c5 p$ I! R& E
  5. void XSleep(int nWaitInMSecs, int nAscll);
    1 A6 }5 j0 [5 w' D# `# a/ u
  6. - g  U, c8 i7 N3 f. C' t) H
  7. #endif // _XSLEEP_H_" q3 @& V) t6 M# i5 J: P4 g; k
复制代码
, _9 B3 X! t/ M8 w5 k, R

3 G& S  C' v8 R/ i9 ~1 }0 Bmfc中的调用代码如下9 t4 [6 j6 l$ m1 ]0 q  p
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

2 C. H. ]  X6 `6 m* r( t/ v3 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:13 , Processed in 0.104355 second(s), 19 queries .

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