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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
方法如下/ w* P' p$ c2 C: y7 k& n
建立 xsleep.cpp和xsleep.p文件
% w, L2 k4 N; C  E% jxsleep.cpp文件代码如下
2 `8 D, Y  W( a0 u- K$ D
  1. //Download by http://www.cncml.com
    ! p2 i1 v! J( o9 \) O* S; W
  2. #include <windows.h>
    $ Q% I2 [1 V" W# u( ~! A# r/ L
  3. #include <stdafx.h>
    - N3 f& N7 o: m$ i

  4. 9 F! ?5 _; r  {; u
  5. // This structure is used internally by the XSleep function * X) m6 c) v' A. j/ ?2 _% W1 O
  6. struct XSleep_Structure0 O4 X2 x6 l1 v$ p3 V3 G; C
  7. {
    8 h6 \! x- \9 x7 O
  8.         int duration;
    8 X+ w4 s- g/ Q- b5 A! Z: t
  9.         HANDLE eventHandle;) m/ t8 Q3 q  P6 e4 Z7 q
  10. };4 U9 S' I! K+ F! g

  11. 1 j- E* h; j& D; z

  12. 8 Z' U/ G, J' L
  13. //////////////////////////////////////////////////////////////////////9 i, W1 o% |9 |5 z0 n
  14. // Function  : XSleepThread()( F! j# L& y2 P! P. w  }. I
  15. // Purpose   : The thread which will sleep for the given duration
    ; L( j! ~1 c* C" {
  16. // Returns   : DWORD WINAPI0 W3 `. q& W! F) y; `
  17. // Parameters:       5 H/ y, X( S% K" U: v  ?
  18. //  1. pWaitTime -
    7 M' q7 p/ t/ a) O( ^% F
  19. //////////////////////////////////////////////////////////////////////% l9 E- F/ Z; l
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)5 E) x( y4 U0 ?, B, N- T7 G/ ?6 ^
  21. {) h% e, }* Y3 w) b5 v- U
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    9 x& ]: E# j: i: {$ D

  23. 3 ?6 ~9 B2 Q  `" v2 g
  24.         Sleep(sleep->duration);
    % S' ?  Q2 |7 @/ g& ?0 s) x
  25.         SetEvent(sleep->eventHandle);( O$ b5 j$ I1 X! N5 T' [* V

  26. + t$ v( b' W1 f
  27.         return 0;
    , E" ^" m* r9 Q. K* Y
  28. }" Z9 [0 d5 n; i1 d) q" C& \/ p

  29. * F: v. s' c. N
  30. //////////////////////////////////////////////////////////////////////
      {( {9 K8 r# E1 y; O
  31. // Function  : XSleep()4 K  N; T2 x) k9 {' e0 [
  32. // Purpose   : To make the application sleep for the specified time4 w7 ~, D3 Y" ?+ f; x1 ~; n( ^
  33. //             duration.& c. t. F* n3 @4 u* F; I6 v# N' X
  34. //             Duration the entire time duration XSleep sleeps, it
    4 Y% Q7 |  J& B, P
  35. //             keeps processing the message pump, to ensure that all  t0 I7 ?; ~! S
  36. //             messages are posted and that the calling thread does: F- W: a0 g/ A% [7 @( K8 T1 ?! K
  37. //             not appear to block all threads!% ?/ H/ w0 I/ G9 w1 A. Y% P2 o
  38. // Returns   : none
    # O3 y. h) T# e+ u2 a
  39. // Parameters:      
    + G7 W# o9 ^& ^+ k/ W4 Y( ?
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    & _6 m' p  k8 W9 \; b3 e  c
  41. //////////////////////////////////////////////////////////////////////) a! `0 }8 G9 i/ f
  42. void XSleep(int nWaitInMSecs,int nAscll)2 \, |8 I1 h1 |# w4 y
  43. {
    0 I+ Y. r% t) m- i3 P+ n& q
  44.                 & ^' n* N% S/ Z+ y* i/ A
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

% r" l' o* `- E4 }$ S  ]8 w- ?4 g$ U. K) S$ Z8 C5 m% x0 M" U9 N2 }3 r& |
xsleep.h文件代码
6 j9 X- v7 G" |+ D& R" C
( Q; L; T0 c& G
  1. //Download by http://www.cncml.com
    ; v6 U" T% d; O, I
  2. #ifndef _XSLEEP_H_8 D/ W' K; w: ]! d
  3. #define _XSLEEP_H_7 `8 ]/ w$ P% s6 |! m* ]$ n
  4. 2 `4 U; I3 l1 `2 x0 @" ^4 u* J
  5. void XSleep(int nWaitInMSecs, int nAscll);
    . I. D; r" }, Z0 f0 O1 f4 @  i. a
  6. 1 l/ ?7 D. [3 a5 h# P
  7. #endif // _XSLEEP_H_/ a0 a0 z; n" H# u9 q8 X( f
复制代码

  t) y! x: H$ P$ Q* A
3 \/ V. U7 U$ u7 H7 }mfc中的调用代码如下
' y1 K, q/ \3 e
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

6 K, L  C" d7 \9 I2 D
/ j, v4 s* m1 k# I" \- T, l& b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:39 , Processed in 0.104751 second(s), 20 queries .

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