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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
5 V: u0 q+ w; R, Y建立 xsleep.cpp和xsleep.p文件
4 r' V6 x  S* n- `xsleep.cpp文件代码如下
4 @) W: h' u& i5 y0 k
  1. //Download by http://www.cncml.com' B3 Y/ L, o0 ]% ]# r9 \
  2. #include <windows.h>3 }1 k' J3 u  `
  3. #include <stdafx.h>/ J' r  L+ |) r0 T/ ~  O

  4. 1 Q2 Y1 ^; E: N+ q6 ?3 [6 ?+ H
  5. // This structure is used internally by the XSleep function
    8 _. x$ W% u+ x' X) i
  6. struct XSleep_Structure. [2 ^+ `' b' P3 `7 V' g+ {
  7. {
      p1 p& W' H3 |; b
  8.         int duration;& S8 f% G6 [; V" ^
  9.         HANDLE eventHandle;
    $ T) j' Z9 C3 ]- N2 j
  10. };1 s) q( t) t* f  A9 o

  11. 2 R! K& H' E2 `* }7 M' x4 E
  12. 7 g" B( N" M; c; y& g
  13. //////////////////////////////////////////////////////////////////////
    ; O* a* [- i/ o+ `" q! X9 {- C
  14. // Function  : XSleepThread()0 I( |) _( X/ G% n; S( R7 Q( ~
  15. // Purpose   : The thread which will sleep for the given duration- w( Y& x6 g& L+ j5 q+ E
  16. // Returns   : DWORD WINAPI
    ; I/ O% U( w$ [" q* S
  17. // Parameters:      
    ! W- g1 F! B8 A9 _( y
  18. //  1. pWaitTime -
    . }7 a7 f6 T! r6 ?' T5 M2 I
  19. //////////////////////////////////////////////////////////////////////0 o9 H6 h, R$ F6 V6 t& b. j! L
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime); M4 n) z  p1 q' e+ O% U5 w
  21. {
    ; q$ S' u5 K- R# |, w2 n1 b. Q$ m" a
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    + g. `) e. T" E  V) A8 ~
  23. % P8 R- \6 j+ `/ ^& T
  24.         Sleep(sleep->duration);
    5 d, m9 M) _; e& j! Q' r* ^
  25.         SetEvent(sleep->eventHandle);
    0 X. [: ~6 @" ~# s
  26. 0 z2 Z0 r2 ^9 d& w7 E! n' _8 f) M" k
  27.         return 0;% v) D5 o7 H1 H9 z
  28. }
    6 F2 ?' V9 P' i7 ]& v7 T3 h; s

  29. ' b7 U7 }+ m8 I: N, i
  30. //////////////////////////////////////////////////////////////////////0 F5 {0 w; w% d6 T
  31. // Function  : XSleep()
    . ?) ^" k" h" w" a# _' F
  32. // Purpose   : To make the application sleep for the specified time; G) P; e: |! R
  33. //             duration.2 h$ ~' l- }* g  G0 o
  34. //             Duration the entire time duration XSleep sleeps, it
    , w2 k8 z1 |  Q8 s3 ^+ ^
  35. //             keeps processing the message pump, to ensure that all7 W5 {; {% b! t, l8 l  z
  36. //             messages are posted and that the calling thread does
    ; ]* C/ |- l) @9 m* f
  37. //             not appear to block all threads!4 F- o2 O1 j! e7 y5 m( s8 ?3 p
  38. // Returns   : none8 j- b0 [) p1 y' K
  39. // Parameters:       3 b2 C/ `7 Q* ~' H$ R) i) m; h* t) g
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.  G  D. S. E- w: K
  41. //////////////////////////////////////////////////////////////////////' L6 _7 _, e" i& Q. }4 v4 p% X$ E8 t
  42. void XSleep(int nWaitInMSecs,int nAscll)4 p" q3 r0 I0 X7 g& K( W- M! }/ u
  43. {+ [* E$ M1 ~. g1 f
  44.                
    . {+ F) a  A( l9 E
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

' [8 O/ {; a, w# c* x! u! h/ p: z7 n
' |7 f3 C2 i+ W# S+ n8 @. lxsleep.h文件代码! K! J" r+ h2 k% j1 \- x0 ?

2 K$ H* `# ~1 M* O) \. f
  1. //Download by http://www.cncml.com
    , |& G' k$ Z7 l' p( x. @8 d5 g
  2. #ifndef _XSLEEP_H_5 V& N' ?# a3 C/ o
  3. #define _XSLEEP_H_2 c5 b& N+ W- z4 {# C$ f

  4. & p& v: T; w& T9 B
  5. void XSleep(int nWaitInMSecs, int nAscll);
    4 S& i5 D/ d# r( f/ b

  6. 4 ]% |3 q0 \( _
  7. #endif // _XSLEEP_H_
    - D) S- K9 n+ n" x4 a# `* d6 M
复制代码
* s1 q) S& m4 H6 H# T

$ p3 ?# x! N1 q0 ^- zmfc中的调用代码如下
9 E2 b/ m% Q) K+ M: N# S
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

6 V7 z- l! L& Y; l# [% m& ^* L: O$ f4 ]7 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:00 , Processed in 0.110088 second(s), 27 queries .

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