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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
方法如下
! s& P* o; E7 ]% G0 r$ T建立 xsleep.cpp和xsleep.p文件8 c4 d; r* C% R9 H
xsleep.cpp文件代码如下
& r; n0 @! l  U# u4 w
  1. //Download by http://www.cncml.com
    $ i; v0 a9 m; K* I
  2. #include <windows.h>
    0 b; c9 @6 D9 U
  3. #include <stdafx.h>( _2 J5 Y' Q( Q) b6 r, ]6 r

  4. : k6 m4 O5 o, i0 t( \
  5. // This structure is used internally by the XSleep function 4 d" m7 T6 Y! ?- N- S
  6. struct XSleep_Structure
    & I1 k+ ?) _% Y! o
  7. {* _' t* t8 {' o7 N6 c7 D
  8.         int duration;; @; B6 j9 \; B# M0 w5 i& j/ \
  9.         HANDLE eventHandle;
    ; P4 O' d8 u8 N
  10. };
    - m- ?$ S* p6 d

  11. " B2 y: {! |; L& q7 l5 E2 I9 Z

  12. ' `; l8 a- o# Y
  13. //////////////////////////////////////////////////////////////////////
    9 Y3 G$ S- o+ K
  14. // Function  : XSleepThread(). ^$ d/ q. }# ?+ g$ Z, z
  15. // Purpose   : The thread which will sleep for the given duration# \& g0 [  Z0 c+ |! Q& ?
  16. // Returns   : DWORD WINAPI: `+ }* `  h& U
  17. // Parameters:      
    8 ?6 U: [4 q) Y! p6 |* u
  18. //  1. pWaitTime -5 X" S' w5 }1 t. c2 Q  c/ q$ m" ?
  19. //////////////////////////////////////////////////////////////////////; `  k0 A; `* S" [$ L4 ^
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)( t0 z! c/ L+ y+ j. o
  21. {
    3 K8 q1 H" _4 W5 D
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    5 A) f" M& o. F+ w- C) [

  23. 0 T5 Z' B" y$ l
  24.         Sleep(sleep->duration);: u0 n5 O, \7 `9 [( L
  25.         SetEvent(sleep->eventHandle);
    4 C( P& V7 Z, B: ]$ z

  26. 9 ^; ^; d2 z$ A
  27.         return 0;, Q9 y( S/ u# i
  28. }) D" k% U( a2 o# L  v( b
  29. ! B* U2 l5 i* q& o3 h
  30. //////////////////////////////////////////////////////////////////////# K" f% Q+ ]" G$ T% y4 B$ a. k
  31. // Function  : XSleep()
      H. G' f) K  J& ^
  32. // Purpose   : To make the application sleep for the specified time+ Z3 `7 G& x2 R0 D% U
  33. //             duration.
      V' o2 u; x' v. U
  34. //             Duration the entire time duration XSleep sleeps, it* q" s3 H7 j, ^+ N5 w
  35. //             keeps processing the message pump, to ensure that all
    6 z4 s( K% x5 t4 |' x" k
  36. //             messages are posted and that the calling thread does8 s7 O* L; `: M' \' _" `
  37. //             not appear to block all threads!
    + g% ^) D5 s+ f1 I3 N
  38. // Returns   : none+ T# S; `( [2 @) t4 h* H% k9 Q
  39. // Parameters:      
    * {9 I" n# p- M1 M3 H* S
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.3 j( C' `- |1 ^0 ^6 q. X. Q+ e
  41. //////////////////////////////////////////////////////////////////////, G% Y  M8 w- b0 T" i3 H1 C8 A
  42. void XSleep(int nWaitInMSecs,int nAscll)
    7 q( u5 r7 ]) k' k3 Z, O8 A' I
  43. {
    9 e9 {6 @* i: @" Z8 B8 k
  44.                   ~5 [+ B: |2 T9 E' i
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
1 U- E5 Q3 {0 K
4 b) v, B  d7 n/ q, M& N. p% v' F! B
xsleep.h文件代码: l& Y* z3 H- V6 {, {9 r+ ]
7 e/ Q5 I' `. Y/ @
  1. //Download by http://www.cncml.com
    ( v) Z4 C8 w4 y
  2. #ifndef _XSLEEP_H_
    ; y" Y- s+ o0 o
  3. #define _XSLEEP_H_
    ) q: Q2 \/ i( G% g8 F9 b: E" v

  4. , B2 F8 |8 c: `
  5. void XSleep(int nWaitInMSecs, int nAscll);
    6 X1 r/ C, o. d- y

  6. , ~  X4 d8 d: g9 g9 q8 r& \
  7. #endif // _XSLEEP_H_
    - ~( I- z, i  J5 j; p6 ]9 Y: S
复制代码
6 @5 V4 M7 ^' t1 d3 z# o4 y
0 _2 E; u: j+ s/ y. P$ s1 f2 b
mfc中的调用代码如下
/ A5 F0 y+ a. [1 ~( {1 k
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
2 v8 f( q' g* M9 c$ ]0 h( d
7 v5 |% V/ b9 \, O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 13:11 , Processed in 0.139857 second(s), 20 queries .

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