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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下, _) }: r1 f- x( V; e8 Z
建立 xsleep.cpp和xsleep.p文件
5 A  b& g: @8 T$ H0 f$ Kxsleep.cpp文件代码如下
+ h, {. {7 H" I) Y% U
  1. //Download by http://www.cncml.com
    , o% o" |9 d/ k( G7 N( r7 e
  2. #include <windows.h>
    ) E4 H& T5 |8 }2 Q1 o! z) @/ `8 Z
  3. #include <stdafx.h>
    ( j, N+ h/ V9 s' `7 T$ @* A: p# s
  4. 0 L+ i; c$ w9 V9 i# p
  5. // This structure is used internally by the XSleep function . b6 V; A* [- q: W7 J
  6. struct XSleep_Structure
    : ~$ K+ C) `/ R" J
  7. {
    ; w' f, \, ^- m$ {
  8.         int duration;
    0 S* m4 P7 R2 Z, O; V+ Q' M
  9.         HANDLE eventHandle;2 b9 `# h/ }6 G4 n
  10. };
    , ?$ X% v2 Q( O7 L) X
  11. 8 K5 O& R) ~( ?- z0 K7 q0 C  V, c8 S
  12. , ]' t5 X3 }; B- c1 ?! ?! O
  13. //////////////////////////////////////////////////////////////////////8 h) Z4 p: E& z
  14. // Function  : XSleepThread()3 R$ i  ~2 t3 L8 a' Y7 l: P
  15. // Purpose   : The thread which will sleep for the given duration. j$ W- p( e5 ^8 M0 P# m9 i8 ]
  16. // Returns   : DWORD WINAPI2 q/ u; C5 c# B. L' J' H
  17. // Parameters:      
    # v1 I4 |- }! I1 S
  18. //  1. pWaitTime -. m) t7 E3 ]1 q+ |
  19. //////////////////////////////////////////////////////////////////////6 _. f- d3 }) \3 C3 r2 N7 y' B. \* u
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)  e6 S/ C" u, s5 o
  21. {- I1 T, s/ y' ]0 C3 |9 x
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;; o5 t: S* t$ G* r

  23. , z7 N* p( f6 R1 K! O
  24.         Sleep(sleep->duration);' E+ E3 G& e# |4 R) t  i
  25.         SetEvent(sleep->eventHandle);, U. @% P' @2 {' s0 C

  26. 6 g2 [& k6 ?) b7 ]+ v0 f* y9 o. u
  27.         return 0;8 ~! M9 M9 P( A4 |0 L$ N4 p
  28. }
    4 ?$ d4 E* y6 Y1 a, g9 P

  29. ( Z8 u& a- _1 R" x) g' `" `
  30. //////////////////////////////////////////////////////////////////////, O7 [7 C8 |& M0 y: n
  31. // Function  : XSleep(). a. _! i( L$ Z1 U! O4 `- W
  32. // Purpose   : To make the application sleep for the specified time! L) g* I9 g8 R, g  T2 G1 @
  33. //             duration.
    7 G: C$ q% e8 D3 {
  34. //             Duration the entire time duration XSleep sleeps, it* F2 |9 R0 h" G0 s+ Z
  35. //             keeps processing the message pump, to ensure that all+ z, e8 a, Y; N
  36. //             messages are posted and that the calling thread does
    ) f0 E& y4 }  |1 v
  37. //             not appear to block all threads!
    1 f5 f! l9 Z6 ^! R, }5 `5 _
  38. // Returns   : none2 n6 G7 O! P  ]1 `
  39. // Parameters:       0 |5 o& Z0 w: j* O. K
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.& o& p# K" y' q; ~; T* q
  41. //////////////////////////////////////////////////////////////////////, W4 y/ T0 W% d( K
  42. void XSleep(int nWaitInMSecs,int nAscll)
    8 t. Q; w0 e/ h
  43. {
    - O. K, m) N7 B5 S6 P! [
  44.                 5 S- e; }% z% n$ K
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

* O+ `4 u9 o" M
$ w3 \* d  C3 ]) Txsleep.h文件代码
2 i0 T0 o& u5 Y2 s1 w2 u$ q1 I* l! f$ F, S( c9 i
  1. //Download by http://www.cncml.com, l4 \# @/ A( m3 d; E
  2. #ifndef _XSLEEP_H_, c8 K1 z; M: s6 D
  3. #define _XSLEEP_H_4 a1 n: L7 f6 t$ S

  4. ; _) r, M  s# F
  5. void XSleep(int nWaitInMSecs, int nAscll);
    0 |5 P/ a% K; V; [0 Z4 R

  6. 8 E& w2 w$ Z  E+ w1 Q! B8 F
  7. #endif // _XSLEEP_H_( h' c0 [$ d6 T  W
复制代码
: y. T& q4 p% @0 p' V: j# X. ?

' R9 q; \4 I4 Emfc中的调用代码如下: k5 N7 S9 d5 }5 ?1 [* u; D  x/ }* N  Q
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
+ _6 \0 D9 Y2 S, {6 h

: V4 }5 b: Y7 e. x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 13:41 , Processed in 0.134721 second(s), 19 queries .

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