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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
# k: A0 q! v2 W' n建立 xsleep.cpp和xsleep.p文件$ {/ j: T& S) B: k+ ?# B  [( y
xsleep.cpp文件代码如下
2 w$ N% Z2 b/ w1 ^: g4 t/ G
  1. //Download by http://www.cncml.com. G: o# N/ A5 M$ E2 D3 T2 O2 @& @
  2. #include <windows.h>& k2 ^" o; o& T+ `$ Q
  3. #include <stdafx.h>1 B: A, x: x: w3 K' V- N  R
  4. 2 y& p6 P# g0 l( K. b# U
  5. // This structure is used internally by the XSleep function . ~  d6 t5 _, `
  6. struct XSleep_Structure$ z: P) v) i! k3 M- R
  7. {
    0 ]0 G3 [+ E1 F0 b
  8.         int duration;7 u) O, {0 M# v# o7 Y7 ?  [& ~* a
  9.         HANDLE eventHandle;
    + h4 C. z- `: }1 _
  10. };
      F, T+ {, T; c! V3 h

  11. , d) t  U, b- n/ Q% T# E! @
  12. 8 \) r! ]' B, u' N5 J: p  V7 K
  13. //////////////////////////////////////////////////////////////////////
    - b- Y. ~* ?+ O: \
  14. // Function  : XSleepThread(): d+ ~: [  ^& N% {' z0 U+ Y9 r
  15. // Purpose   : The thread which will sleep for the given duration7 K' H$ C4 |3 B: ?% z8 r4 e  `/ {
  16. // Returns   : DWORD WINAPI
    - R1 c: D. U; S$ `( a
  17. // Parameters:       2 o. t) Y1 r! E. t! ~6 l- y& o6 o' N$ m
  18. //  1. pWaitTime -# }, i/ x3 v: h9 ]+ s# U
  19. //////////////////////////////////////////////////////////////////////% c- k9 \" k# {- L1 O
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    5 a, s) k2 M0 ~2 P4 ?
  21. {
    . v) n# D& v3 n1 G8 p; j% @3 {
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    5 y' h  H3 k5 v6 K$ ?
  23. 8 x& _1 d: P, m# x1 k6 c
  24.         Sleep(sleep->duration);$ }9 D7 ^" B: r# I
  25.         SetEvent(sleep->eventHandle);
    # j3 f( b! h. B7 ^2 ~$ \9 T/ H
  26. 0 |+ o" y7 O7 U6 n
  27.         return 0;
    , O" I& h/ |! h) }! `: V
  28. }" n9 n+ \* l! ?" A% C

  29. ' U+ a9 R' R: F& J' t# l( J  j1 w
  30. //////////////////////////////////////////////////////////////////////$ c: L* V, j4 j: R, i6 P
  31. // Function  : XSleep()
    1 `  U2 _2 q4 m2 _2 y
  32. // Purpose   : To make the application sleep for the specified time3 s& O+ V# z; V- G$ _7 a* l
  33. //             duration.
    ' F0 _. F$ S0 {' m. a8 M
  34. //             Duration the entire time duration XSleep sleeps, it  d1 [5 ?% {! B* E/ A' p* ]
  35. //             keeps processing the message pump, to ensure that all3 M; z6 X3 V0 o4 O- c5 V. E8 r- T
  36. //             messages are posted and that the calling thread does
    4 H/ {$ m$ ^; f6 T
  37. //             not appear to block all threads!
    9 X% n9 A3 ]( K" ?
  38. // Returns   : none' R! Y5 c) q6 z& B$ @, h7 s
  39. // Parameters:      
    # I: O) R  Q( I& T% }0 R
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    : Z$ }4 s! t' v9 r4 C5 |
  41. //////////////////////////////////////////////////////////////////////
    " q6 n8 g; _" ~1 D& ^1 J- F4 r
  42. void XSleep(int nWaitInMSecs,int nAscll)
    7 P8 W5 y% E; O" w3 ~
  43. {
    % s* }; k4 I" H: Y1 g
  44.                
    : b" v) J* L2 n9 M8 W
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

" b! r8 J: p: H( B0 _# [' C6 v; I+ Y( {3 T* D9 N
xsleep.h文件代码1 W! E$ E9 z" Y" O+ W- p

+ S+ I2 v! `, l$ P
  1. //Download by http://www.cncml.com
    5 q6 C1 b3 o+ q. e1 ~9 Q# W/ C& y
  2. #ifndef _XSLEEP_H_# t) t% n! X) V( p: w* W
  3. #define _XSLEEP_H_
    / f! A$ S/ V) _# z" `* B1 N; o8 c1 p
  4. . w( l) s; J% F+ Y9 Z
  5. void XSleep(int nWaitInMSecs, int nAscll);
    7 \! k" x8 o0 H+ i, k& u

  6. 8 j, U7 Z6 G- P/ L& f9 |
  7. #endif // _XSLEEP_H_+ A  T$ q% d* w2 a$ O$ [- q( S# G( b
复制代码
, o  V5 }1 z. D9 s- }9 e  {! f3 V
% r7 I! I2 [; t6 J0 `# P
mfc中的调用代码如下
' i1 c4 n: r( s, z8 N: a
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
- o9 e+ q+ z. l* D! p9 K1 C. t9 \; Y
( T# w( h2 _$ Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:05 , Processed in 0.068698 second(s), 19 queries .

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