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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
6 g3 {1 Z- B& F/ l3 Q建立 xsleep.cpp和xsleep.p文件& \) v+ s2 I3 O1 H' M7 y+ E8 L$ c/ E
xsleep.cpp文件代码如下
5 Z/ a% b' U6 F
  1. //Download by http://www.cncml.com
    # m) Y3 R% M  [* |/ M) v& ^
  2. #include <windows.h>
    ( n, B# I* d3 U5 B' u
  3. #include <stdafx.h>+ g* G) i! q" {

  4. $ ~# f$ C) n2 i9 D4 Z
  5. // This structure is used internally by the XSleep function 5 i7 \1 H  \& |3 {- t
  6. struct XSleep_Structure. c6 {. S2 V( h" a8 D$ s7 x
  7. {8 c5 h: _0 f2 b. u
  8.         int duration;5 Q% }8 ?. E5 N1 I, K
  9.         HANDLE eventHandle;
    8 }4 F3 c; B4 E
  10. };9 a3 J  U$ K, J4 i3 r" P' I& N* {
  11. , t3 g* ^0 \/ o0 M( t8 \

  12. . x& r8 [" A& I, A  J
  13. //////////////////////////////////////////////////////////////////////' f! P* F1 C& G- c) E! X
  14. // Function  : XSleepThread()7 T* z& P$ ^: Q& J3 P: _
  15. // Purpose   : The thread which will sleep for the given duration
    ' h+ h2 V3 {6 y; N9 J. D- x0 Q$ V3 {
  16. // Returns   : DWORD WINAPI
    & x1 s! d( ]) V- a& H
  17. // Parameters:       + D- t$ |( ^( n! t  p
  18. //  1. pWaitTime -1 o9 M6 [' P6 \8 `# i" E
  19. //////////////////////////////////////////////////////////////////////
    7 |& W  h: a) V5 P( ^- q
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    , m9 U) X  t2 a  v
  21. {
    ! X3 g, C4 W0 I1 G; f. n, L4 b: g
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    * @, V* @, E5 N

  23. $ o) V4 T. k! U
  24.         Sleep(sleep->duration);7 A. o( u  V9 s' J% O, K
  25.         SetEvent(sleep->eventHandle);% E/ O# ~, X# J; |: j

  26. 2 C4 f2 T  p) p9 Y
  27.         return 0;4 [2 ^9 V" ~( f. _0 S! H& [% b
  28. }
    1 X. O( w( Y. T% U

  29. $ Y0 l4 S* M. F1 I- v5 Y
  30. //////////////////////////////////////////////////////////////////////! Z% M# }5 x+ ^0 G" i
  31. // Function  : XSleep()5 W+ l1 N: K8 h; N7 Z/ E
  32. // Purpose   : To make the application sleep for the specified time
    ) r5 C* x9 X: m0 w# C: ^
  33. //             duration.
    % j+ m4 x) \4 f$ z. P! Q1 W) g
  34. //             Duration the entire time duration XSleep sleeps, it
    9 A" m( k# S2 o* g0 c
  35. //             keeps processing the message pump, to ensure that all
    . o& J# [/ v  m" [
  36. //             messages are posted and that the calling thread does, K& s+ ?. C$ N) X
  37. //             not appear to block all threads!
    9 p& j5 R/ K- C
  38. // Returns   : none
    0 h7 z+ l$ I" ]  {$ H4 i/ J1 r4 r3 z: o
  39. // Parameters:       9 A- Z& y$ T& `4 w7 y6 V' D  o
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    $ k, K' X- B" {
  41. //////////////////////////////////////////////////////////////////////# V6 l1 ^: J- Y7 ~7 G1 ^! `
  42. void XSleep(int nWaitInMSecs,int nAscll)1 F+ U" e1 c& `& _4 l
  43. {
    9 M4 i. i. W9 ?; U6 M
  44.                
    % }! U7 T5 Q% c* D3 I( @
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
7 q. d- J3 d9 s! Y5 {: j: d

* P$ U* |* Y, N8 t- Exsleep.h文件代码
8 N9 f) R+ ?6 o* e. u" [/ D* S5 a5 ^: j4 G4 f0 ~2 b0 j
  1. //Download by http://www.cncml.com
    & ]3 i1 [+ j" K1 Y7 f
  2. #ifndef _XSLEEP_H_' j$ v( G3 V( G  T4 s
  3. #define _XSLEEP_H_
    * e0 K! s- {& Y5 T* x7 D
  4. 3 {+ Z$ A, b1 |8 I' U
  5. void XSleep(int nWaitInMSecs, int nAscll);+ f+ v/ S$ G! s1 m% N
  6. & \- n" T& h4 e! M3 I: j" S, @
  7. #endif // _XSLEEP_H_3 p8 F. Z; t. X, E
复制代码

- F: J8 ^: a$ Z& i& Y6 t9 b. U0 g  S4 J
mfc中的调用代码如下
: `. x3 K3 @$ _' ?9 D, f
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
) V# l4 z% I+ _; }, b
) t4 u& @$ V. T- o$ N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 07:18 , Processed in 0.110674 second(s), 21 queries .

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