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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下! R2 \/ {/ U( _
建立 xsleep.cpp和xsleep.p文件
+ o3 V% n% J) W! `. D/ mxsleep.cpp文件代码如下
% ?( |4 h6 \+ \# f9 q5 x, F4 E8 q* H
  1. //Download by http://www.cncml.com) f, v; `5 y! |7 g
  2. #include <windows.h>
    & x) t+ j0 k9 T6 F5 [
  3. #include <stdafx.h>% E+ ?! A+ D7 p3 X$ q( n
  4. , s. Y4 F9 a2 y5 E3 F
  5. // This structure is used internally by the XSleep function # e; [( b* z" \
  6. struct XSleep_Structure
    4 A0 Q! c3 o7 B5 Y6 {
  7. {
    # d0 U2 O5 W7 c5 a/ q0 ?
  8.         int duration;
    : T3 `; E  X; e0 R
  9.         HANDLE eventHandle;
    0 B. P' z& u1 Q3 i2 I1 J
  10. };
    # p4 ?  Q4 R# i
  11. 0 F" b% a. B( S- H5 z6 F# q
  12. 5 y6 g9 b+ O9 V9 i7 i, y/ }2 ~- i
  13. //////////////////////////////////////////////////////////////////////6 s! G6 B- U- b2 U3 Y  s
  14. // Function  : XSleepThread()+ Z9 l9 S% o( e- c+ ~% R
  15. // Purpose   : The thread which will sleep for the given duration6 S2 ^% |  A3 n! ^, H
  16. // Returns   : DWORD WINAPI* v2 X* d( U; l4 ^  R# x
  17. // Parameters:       ! `$ ]- d! m8 y8 J' |2 u* R* d
  18. //  1. pWaitTime -( P5 E8 x* ]8 C, }0 k" W6 V
  19. //////////////////////////////////////////////////////////////////////
    ' ]9 S; y8 `; y
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    $ x0 M$ \. A5 }# e7 \
  21. {" p0 f9 [; i- a% @) K7 @
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    - F1 H' G4 N5 A( p  H5 Y
  23. % o- [5 k3 j+ x3 _
  24.         Sleep(sleep->duration);
    ' ~  S) Z$ Z$ a: S* v6 ?, d
  25.         SetEvent(sleep->eventHandle);+ P5 n; S5 {5 o8 }1 |8 Y

  26. ( R1 p: p! P- F
  27.         return 0;
    / I# m* h7 j7 S& q  H& w4 v8 c% c7 u3 r
  28. }$ L: ?9 ~! m3 m* v7 @" ?# p

  29. ) H  k4 G  s3 }* O/ b* d
  30. //////////////////////////////////////////////////////////////////////# G: L# I* ^; C+ R- S  e
  31. // Function  : XSleep()( F' V7 t5 w: u& V
  32. // Purpose   : To make the application sleep for the specified time
    7 t/ n1 I: Q# t. T
  33. //             duration.
    + x  k) d9 J% w9 v
  34. //             Duration the entire time duration XSleep sleeps, it7 _  F5 G) b# e" s& ~. C0 P
  35. //             keeps processing the message pump, to ensure that all
    9 K0 ]# w+ Y. {" {4 a
  36. //             messages are posted and that the calling thread does$ M% X; V' i0 G+ {- _/ p
  37. //             not appear to block all threads!- O5 u4 F2 u* Z: w
  38. // Returns   : none& ~2 `' A9 U, x6 j8 o5 @9 s
  39. // Parameters:       . B; R" Q( Q* ?, _5 u  E4 ^
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.3 i/ Y$ x) F/ @2 z: X
  41. //////////////////////////////////////////////////////////////////////( j1 b4 @4 n9 e1 e( C/ B; J
  42. void XSleep(int nWaitInMSecs,int nAscll)
    " r- `. ^0 ?# P- z2 v; L( g! T
  43. {* _, P* ]8 a; @+ {& m
  44.                
      F! a7 m# t" ?* w  k
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

6 T' h+ e, o0 }( A" O, m5 h
% [# H* [  ?% g% L. ~( pxsleep.h文件代码! P5 e1 a6 b+ S& J. J' k2 n3 @3 f
3 I/ [* |# P; D! v2 n# p) L( _6 H
  1. //Download by http://www.cncml.com$ O& m9 _+ v+ I8 E: f- J. l
  2. #ifndef _XSLEEP_H_( }( r% P/ r  B
  3. #define _XSLEEP_H_: \8 r1 c+ A+ W9 K" x
  4. ; |. \7 W% Q: z' B! I8 }
  5. void XSleep(int nWaitInMSecs, int nAscll);
    : L# `: P! ~- [) `* x2 p$ t% L% t
  6. & Q' u( b7 |* N6 z
  7. #endif // _XSLEEP_H_) b: S' }# J* X
复制代码

# T4 y& i( m1 G0 _/ J1 `+ q5 B& o% L# K. V
mfc中的调用代码如下
( a+ M, r: _- k4 k6 [* q. @0 p! u
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
: T+ v) Y) _. N1 [1 o9 [4 H, Z
1 [2 N. `- L- p$ K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 11:27 , Processed in 0.111515 second(s), 20 queries .

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