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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下, T' V* ^1 e, ]1 K# a
建立 xsleep.cpp和xsleep.p文件
/ k; c  S3 k* o. t3 ^" Hxsleep.cpp文件代码如下
" L% G2 o8 W  @% s- L3 h
  1. //Download by http://www.cncml.com
    + y; E+ I9 c) s
  2. #include <windows.h>
    * P# X( ^( _0 Y
  3. #include <stdafx.h>
    % v9 `" ]: u+ L
  4. + i+ |  N& i* K! O" m& a* S+ K
  5. // This structure is used internally by the XSleep function ; J5 n4 f+ n6 D+ \! A7 W9 K. f
  6. struct XSleep_Structure
    ) {8 j, D+ v6 G
  7. {
    ! n7 b$ e/ Q* }& t
  8.         int duration;9 d+ V+ b4 g1 k' o2 b1 L
  9.         HANDLE eventHandle;& w9 s3 a* N8 D
  10. };0 V4 s- x0 j) w# U; o
  11. 7 e$ @( f8 O/ N  B" z) q
  12. # O! K& U. I. r
  13. //////////////////////////////////////////////////////////////////////# P" V; B  Y$ P1 b( A  `* k
  14. // Function  : XSleepThread()
    ; U0 c3 V# z# x
  15. // Purpose   : The thread which will sleep for the given duration: e, K( z0 q0 s
  16. // Returns   : DWORD WINAPI
    ! a! r$ D. p% V" y
  17. // Parameters:       # \+ }' u& _* H% i1 ~  o/ Q* a
  18. //  1. pWaitTime -
    : U! a7 B- A% l, t- ?
  19. //////////////////////////////////////////////////////////////////////2 U2 H6 H8 q7 ?* F; |
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)8 J( Z4 ?0 K1 ^% Z
  21. {
    0 A; P3 K, n6 R
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;+ e* a( X5 z/ |, z# D

  23. 4 y8 q; s% Y" B, ]$ I) v7 v
  24.         Sleep(sleep->duration);6 \" W) {6 W1 P, p9 J
  25.         SetEvent(sleep->eventHandle);! O& M2 y1 s2 E4 f; f
  26. 2 M* |$ Z: k$ P
  27.         return 0;
    3 _7 q7 `' F# ^- q; X8 k; r
  28. }, ^/ s" P1 U/ P# P
  29. & P2 b) r3 O$ j3 [9 t6 P" t+ n
  30. //////////////////////////////////////////////////////////////////////4 H. S& _8 ~" I: D1 }) W! l1 E
  31. // Function  : XSleep(), ~3 {& r/ |4 o7 h, u5 M
  32. // Purpose   : To make the application sleep for the specified time$ ]0 Z- L$ P! n5 C
  33. //             duration.
    - c% g- R- p# Z0 j; \+ R9 z
  34. //             Duration the entire time duration XSleep sleeps, it- J9 Z. H5 i  @4 I
  35. //             keeps processing the message pump, to ensure that all, }( X, v, V( m" X( J' W
  36. //             messages are posted and that the calling thread does' f$ x$ D0 H" t' x
  37. //             not appear to block all threads!: ?! a. c2 p  w
  38. // Returns   : none4 d# L! g9 @- ~& q: }
  39. // Parameters:      
    3 `9 q( q" g. O" z  K; I
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    " d+ p8 V; c2 y# k1 M6 O7 A
  41. //////////////////////////////////////////////////////////////////////
    1 G& ?8 n" Y/ F6 }" E
  42. void XSleep(int nWaitInMSecs,int nAscll)
    7 b# p. A% v% r6 C% W% i8 m" E7 C
  43. {% v8 r* ~) q' s- M3 }
  44.                
    3 F, O( Q% n  z& P% ^
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

9 ?' U: E$ K! ~' J  T8 J. G, u! x) O' y- W8 k$ e
xsleep.h文件代码
# b7 Z2 G8 T; }% t7 G2 G# k8 n. ~( f0 s2 H9 W2 U' H
  1. //Download by http://www.cncml.com
    4 H, g+ W/ M, B0 ?& O+ ~7 J) a2 J0 @/ L
  2. #ifndef _XSLEEP_H_, C& i( ?7 k  o6 e: h
  3. #define _XSLEEP_H_3 q) O7 w( O' P: j0 z

  4. + x7 p, u. p! D" e
  5. void XSleep(int nWaitInMSecs, int nAscll);/ A) A  A6 o5 {9 k& u5 W& y5 Z

  6. % ?, k) n4 L8 w8 T6 i+ q# w
  7. #endif // _XSLEEP_H_
    + ^- Q: f: S. x7 c$ Y
复制代码
, ^9 }2 k  c2 Y' F, M( I7 J

8 _' f9 J3 K8 `: K; nmfc中的调用代码如下$ m) c* M) I; F& l
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

. g4 }6 d; S/ f' w! B. t. X' H% r3 D# W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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