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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下! s- ]' ^- F' ^+ ^
建立 xsleep.cpp和xsleep.p文件! c6 j  o* H9 h  [7 F) [3 f7 }  }
xsleep.cpp文件代码如下8 j$ {  T7 O, d. B
  1. //Download by http://www.cncml.com2 W; b" W" ?4 g* L6 ]6 ]
  2. #include <windows.h>
    5 h* ^5 ^. n7 l% \1 N! {1 C, }
  3. #include <stdafx.h>
    7 ?; s0 h7 I- }  e

  4. # l, F9 n' O& u3 K
  5. // This structure is used internally by the XSleep function 9 F# m: O2 X( [& T: w7 J
  6. struct XSleep_Structure+ G6 k: B7 i7 L8 S
  7. {
    1 y, \, L# ]% H7 w# _! L
  8.         int duration;
    1 k+ k% t$ R8 H1 {
  9.         HANDLE eventHandle;" A) e. |4 ]8 ?8 l2 t9 M6 R
  10. };
    2 ]8 n5 g) X4 N) P/ q. K

  11. 0 d7 C" l3 ]( v' @3 `7 Z6 A, C
  12. 2 K2 X/ L$ M6 S( a
  13. //////////////////////////////////////////////////////////////////////7 c4 j0 K' V4 ]8 z! i3 l1 K2 Y: Y
  14. // Function  : XSleepThread()4 `  w$ k2 \9 t  T1 y" r% ?
  15. // Purpose   : The thread which will sleep for the given duration
    ( ?7 Y/ k  J4 ]' e$ i" L% `6 Y
  16. // Returns   : DWORD WINAPI$ ~4 Z4 [# _; ?
  17. // Parameters:       3 T2 O, k$ r! A; z7 O% b6 y
  18. //  1. pWaitTime -/ X4 s3 }8 |0 j/ `$ g
  19. //////////////////////////////////////////////////////////////////////( @* I6 M  R, a6 B' D' d
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)5 D; o# S0 k5 |% \' s" h
  21. {: E" C9 z% R# q% @
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;2 j* V* f0 K# @/ @7 }7 ?7 a3 U

  23. + \. T- }' y+ c6 w
  24.         Sleep(sleep->duration);. l& ~$ X) j$ t. N* u
  25.         SetEvent(sleep->eventHandle);
    6 D0 m* U6 }0 [

  26. 3 y1 [/ p- |6 e. r# W4 q
  27.         return 0;
    0 b- n+ N" W5 h! V. k" t
  28. }! F& }% b' O" `0 c/ D% U

  29. ) a- p  C" a* E; x* T9 p1 G
  30. //////////////////////////////////////////////////////////////////////
      k$ i' z0 B( f9 Z, T( [
  31. // Function  : XSleep()
    9 g" o3 P/ y8 R
  32. // Purpose   : To make the application sleep for the specified time
    # S6 t0 A% u5 [3 Y8 S4 g+ A! P
  33. //             duration.7 y; n7 p" f/ l* @# f! m* a
  34. //             Duration the entire time duration XSleep sleeps, it# _, \9 e- J% L- W2 g* `
  35. //             keeps processing the message pump, to ensure that all% h. Q! d6 U& G7 {/ ]! t
  36. //             messages are posted and that the calling thread does
    - o% d% U5 o# \) N
  37. //             not appear to block all threads!' F1 y, ?+ }9 I" p, c( ~- O: @
  38. // Returns   : none: D# }- }2 P, Y: R2 B4 D8 P
  39. // Parameters:      
    # T3 ~$ a8 W3 `) D. D
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.) k- M9 i. P/ X3 V1 t! z
  41. //////////////////////////////////////////////////////////////////////
    * \: B! `. {! @9 `5 n
  42. void XSleep(int nWaitInMSecs,int nAscll)
    / [9 X. K  q2 N! z2 P3 @
  43. {
    # Q/ L  U' q. W. h
  44.                
    8 x! I! x$ B. I$ b2 ^1 B+ D; q
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
( N4 y: q  m9 x1 c/ h
( J  u5 a4 `0 }: @# \" o6 A
xsleep.h文件代码
; X! D0 J% B5 }: |, n; S
2 G! I, E- Q& }( Y3 j2 D1 \
  1. //Download by http://www.cncml.com# G- e+ U! B: W1 ]& e
  2. #ifndef _XSLEEP_H_- Y+ m4 ]$ h* q0 X0 d9 H! l) Q
  3. #define _XSLEEP_H_
    * _* h. {1 M0 y3 n. n4 @4 e

  4. 7 n! h7 o0 i1 v8 T6 A
  5. void XSleep(int nWaitInMSecs, int nAscll);& S; i2 i/ M0 O6 d  d' k; ~' S. H

  6. ' x! c0 B, x3 g2 H* Y
  7. #endif // _XSLEEP_H_
    / o1 q+ n! E& y: O
复制代码

3 ?) s" p) s5 N
5 m# H5 l9 a/ v2 a: bmfc中的调用代码如下
% o& ]8 ?+ l$ c
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
/ j' m+ F2 s' z9 Y, i
1 W/ Y( l! ?: D! ]2 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 17:16 , Processed in 0.113585 second(s), 20 queries .

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