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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
8 T( ~" @5 X7 m建立 xsleep.cpp和xsleep.p文件
8 x; y1 q4 O3 pxsleep.cpp文件代码如下% N- h7 T0 @' e3 Y3 Z4 p* W" o1 g
  1. //Download by http://www.cncml.com& g9 x( V. Z8 o
  2. #include <windows.h>
    ( |% b  G- K3 w4 g! Z/ ^
  3. #include <stdafx.h>
    . s* }7 O8 A& D+ z8 f1 T( K/ m/ u# A

  4. 2 c0 j1 J! N1 W
  5. // This structure is used internally by the XSleep function 4 ]! H4 H9 u( G2 k9 V! s
  6. struct XSleep_Structure
    : W! o5 Y  o( h* b- A/ j
  7. {9 U1 b" }% |( Q3 Z8 h' x% ?
  8.         int duration;
    9 S7 T: D* D" }/ ~7 K0 f' |2 `3 p+ ?3 P
  9.         HANDLE eventHandle;( @9 W2 e: e- N# a  G
  10. };
    : f1 I! Q, ], B; _2 s! U1 e8 }

  11. ! p  I) y  v& @  C/ W+ U9 ?# _$ Z  ]- M

  12. , h3 L6 }4 H; M( D; i1 z
  13. //////////////////////////////////////////////////////////////////////+ s/ `" D; R: Y0 ?
  14. // Function  : XSleepThread()
    ) n, C  S6 S" i4 n- t1 K0 ]
  15. // Purpose   : The thread which will sleep for the given duration
    : |# M* ~8 k, `% W* V; z
  16. // Returns   : DWORD WINAPI
    8 l# m9 s8 N& F* s2 }/ M9 ?0 h
  17. // Parameters:      
    & ~0 x2 l1 m/ v; ^! H
  18. //  1. pWaitTime -
      W" ^; q$ |$ u0 c. y0 d
  19. //////////////////////////////////////////////////////////////////////
    ; z  \' y9 Q; O) s
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    . ]2 S- L9 R- ^
  21. {/ F* T+ \( C8 \+ T' G
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;& v2 N7 p' c" X# v* |3 r
  23. 8 J% [1 x3 |" u/ U0 g; ~( e
  24.         Sleep(sleep->duration);
    2 m0 Y* ?' G% L, s, N+ D- _
  25.         SetEvent(sleep->eventHandle);
    " M, F4 v( q8 X; ?9 `4 S" d9 p

  26. 2 y6 p" u5 Q# E
  27.         return 0;) E7 }7 A+ O4 }9 L3 d" y
  28. }# q' ?& H0 X0 S6 A9 k, m5 s" }
  29. 4 X0 i7 {  u0 _6 H4 ~% m; ]
  30. //////////////////////////////////////////////////////////////////////( Z# m% {0 _" M8 B# p& K) t
  31. // Function  : XSleep()1 j8 u* ~4 m) \2 ]
  32. // Purpose   : To make the application sleep for the specified time
    0 H" {& l5 ?4 b' {: {$ B" K( }, b* H
  33. //             duration.
    , X- C0 _2 K. X1 X+ M
  34. //             Duration the entire time duration XSleep sleeps, it
    5 B  K3 W0 g! u4 @" ^& d
  35. //             keeps processing the message pump, to ensure that all
    6 O4 s! j/ h3 o8 x. q# F
  36. //             messages are posted and that the calling thread does5 S+ m* d5 q: W' X8 S) ^; I( v
  37. //             not appear to block all threads!
    + ?& L7 S; M& W$ Y: J
  38. // Returns   : none
    3 p6 G+ q; s. B6 W# [: e
  39. // Parameters:      
    5 S4 z% v7 P) K2 @4 j* w' ~/ ]# s
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    2 c* x, e1 r9 i/ Q8 U/ Z0 i
  41. //////////////////////////////////////////////////////////////////////" L/ v4 e8 ?8 n2 G+ f- V& J: x6 F
  42. void XSleep(int nWaitInMSecs,int nAscll)
    3 e7 C8 S' e$ A9 T* x
  43. {) L4 L$ r# m. ~: M, a  m. s. u
  44.                 - t! Z' r2 a2 g3 Y6 _4 c/ o
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
# C' r" ~. U+ _' W: ]) Q
" H! L9 `1 f0 [( O- ~0 U
xsleep.h文件代码
% G0 i; K" R0 b- C$ i- H5 L4 h
" Z7 ]# s4 d/ \+ g; _, d/ r
  1. //Download by http://www.cncml.com
    9 r' N5 {: o4 q8 O
  2. #ifndef _XSLEEP_H_
    ) s$ V; O$ ~% z. M1 M) C9 w
  3. #define _XSLEEP_H_, r- P8 X: C$ S" u/ [- i, f% K

  4. # a& V. {3 P0 j# h1 j3 `
  5. void XSleep(int nWaitInMSecs, int nAscll);6 F5 S6 U& R( `: C( k: a

  6. 6 ^9 ?8 o9 d+ Q3 q9 P
  7. #endif // _XSLEEP_H_
    4 m* q, O5 F% F2 L2 |; C
复制代码
: B: T0 ^4 i7 c7 |
3 l. O& J! k5 p) c" f* M6 m4 E/ Y
mfc中的调用代码如下
. D* B7 R! X( @7 B8 f2 p
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
/ w1 S6 x7 ?2 e- }! m' [
; T4 Z1 J0 M3 u) w5 F& S- ?4 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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