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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
# P8 g0 |9 t2 E5 |建立 xsleep.cpp和xsleep.p文件; z) z5 T- {9 o9 R8 _; H! x
xsleep.cpp文件代码如下! s, k1 a0 ?; z6 v( l& B
  1. //Download by http://www.cncml.com
    - V1 v/ k) r5 M. L& f/ ?  t+ i2 B3 V! T
  2. #include <windows.h>
    . {  ^8 h* j% c9 R* q& t* X, j
  3. #include <stdafx.h>
    ; l9 F$ `- _: S

  4. " B$ C. M  x1 }, Y% @3 G, w3 e
  5. // This structure is used internally by the XSleep function
    , Y) `* y- f3 s- j! i& l
  6. struct XSleep_Structure
    ! V; o5 m9 i, i5 h3 [
  7. {
    - }7 a- T0 U& w7 K) ]
  8.         int duration;
    ! v  v$ h9 F% Y
  9.         HANDLE eventHandle;8 b7 Q( S3 X. n! e. n% N. ^
  10. };; f& u5 q" }; l* ]* L; j0 u/ J3 ^
  11. ' P- }; n& _2 k2 h: s4 [

  12.   g' k9 g3 |3 b" D$ J: O
  13. //////////////////////////////////////////////////////////////////////
    : ]5 s: y' V) q
  14. // Function  : XSleepThread()+ Z% ~. D; K* B2 W# R
  15. // Purpose   : The thread which will sleep for the given duration
    # a9 R% F, |( t4 e
  16. // Returns   : DWORD WINAPI& h/ L: N! D* l$ y
  17. // Parameters:      
    2 J, n) v( ^9 k
  18. //  1. pWaitTime -0 _  y5 ^5 N8 ]
  19. //////////////////////////////////////////////////////////////////////
    1 G1 L, T% F; L' E2 J9 G
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)# G$ P2 e+ O5 W) f2 V$ J
  21. {# e" g% v2 r, m- D8 V
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    1 n6 m) ~0 L; T

  23. ) n0 [6 O! L! c* N$ {
  24.         Sleep(sleep->duration);
    " {9 T6 b- r: l% _) k
  25.         SetEvent(sleep->eventHandle);
    - B4 t$ O! q5 d: p: r6 V
  26. 5 P2 @/ s9 P$ _% z' d5 f
  27.         return 0;. p# r- P  F% p' s
  28. }
    + {5 t0 S: `8 n4 h7 c  X

  29. ) i# _$ j5 o8 B+ r/ k
  30. //////////////////////////////////////////////////////////////////////& b9 e' W* S' h
  31. // Function  : XSleep()
    - T' ~- Y: l4 g
  32. // Purpose   : To make the application sleep for the specified time
    # Y, z; s/ F' k$ w8 K- W3 K0 @
  33. //             duration.
    % l% w2 Z% f# G6 \! \0 ~
  34. //             Duration the entire time duration XSleep sleeps, it
    " N% V8 g1 V6 x5 o! I/ o% O
  35. //             keeps processing the message pump, to ensure that all
    ' D) B0 v5 i! p& s& ?6 L
  36. //             messages are posted and that the calling thread does
    " O; c6 a2 d" B4 d7 n3 e1 @
  37. //             not appear to block all threads!. G: |0 k- ]( P4 d
  38. // Returns   : none
    9 ?+ D5 @, {  Q4 e4 @! B, w4 s0 i
  39. // Parameters:      
    ; q$ q7 p1 t8 b3 o# }
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds." V' Y/ l8 Y4 @2 n6 `
  41. //////////////////////////////////////////////////////////////////////) G. d. g) Y, p
  42. void XSleep(int nWaitInMSecs,int nAscll)
    6 X3 h+ ^4 G, ?; @& H
  43. {
    & |1 v- |9 Y# J0 A/ k8 @. B
  44.                 ( E3 O7 w5 H: X" y0 O
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
  v. Z9 _$ U3 a) l+ I

  z" `* l( Y4 |( m8 Axsleep.h文件代码4 s3 }) l& E# Y& s7 Z( E

& W/ Y9 W4 S0 n
  1. //Download by http://www.cncml.com' q$ {, g: d9 m; z# ?& ]: j
  2. #ifndef _XSLEEP_H_
    ) ?4 f+ C& ]8 S( Y, Q' n
  3. #define _XSLEEP_H_+ ~- v; m( n9 S" K# a5 B3 j

  4. 2 U; o& U3 i$ A
  5. void XSleep(int nWaitInMSecs, int nAscll);6 r8 s4 L! k( T" p. t
  6. 1 g6 E! s% z. x$ ?
  7. #endif // _XSLEEP_H_
    9 ^* G, i2 j- K7 r
复制代码

) A- @9 W6 }0 M9 s
& `7 H) G+ E: P! M8 ?, J3 T3 Fmfc中的调用代码如下
2 l+ g' K" ]! F5 M0 }& L/ y
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

; {0 y: h" l3 q% r
) C1 \1 b/ I0 w* M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:46 , Processed in 0.059123 second(s), 19 queries .

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