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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下
; L5 r8 {, T$ u$ f( R) ~建立 xsleep.cpp和xsleep.p文件( K! h1 o/ g, n" W5 W" b: S
xsleep.cpp文件代码如下
, _* K, i$ u( M
  1. //Download by http://www.cncml.com
    ! H  x7 i# v% ^5 [
  2. #include <windows.h>' S$ {. U6 r% v
  3. #include <stdafx.h>
    - {" M5 w8 \# I0 W3 W& w
  4. + }, x) q6 E7 a6 K/ j
  5. // This structure is used internally by the XSleep function
    - [$ R  H7 @! w2 `: ]! `
  6. struct XSleep_Structure
    . [4 p. W/ g- \! v6 J; o: B0 _+ \4 `
  7. {# o. q5 M. K1 D4 W1 u. p, p- p
  8.         int duration;
    8 v5 K7 C  f; M! D" p# H4 u
  9.         HANDLE eventHandle;
    - @2 ?  l  X8 ~1 q  ?4 C! o+ }
  10. };9 w# S! X' V! |/ c0 a$ a4 C' {7 f

  11. - X  U/ I# C7 z

  12. - @! `6 y0 {" G: a: Q$ T1 @0 s
  13. //////////////////////////////////////////////////////////////////////
    1 @% Q; c$ W/ `8 A% q4 r  `
  14. // Function  : XSleepThread()
    5 @' ^& j( Z3 m( h
  15. // Purpose   : The thread which will sleep for the given duration- T2 [* E+ T# F3 V' {3 }
  16. // Returns   : DWORD WINAPI5 I* N$ J2 Y" b0 N! C0 S- ^0 j# o
  17. // Parameters:       6 g9 q& W  e+ Q1 H5 \
  18. //  1. pWaitTime -
    0 ~2 c) c6 e! A/ T
  19. //////////////////////////////////////////////////////////////////////
    ' q; a' L7 k/ ?+ z1 O
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    2 r& `' P/ x; X0 ^
  21. {
    ) k8 [$ [8 e3 a
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;4 l, s" G& j1 C  l

  23. & X; R$ Q2 u* S  [( S/ X
  24.         Sleep(sleep->duration);
    2 k) L( D) G3 u0 y' z8 Y; p
  25.         SetEvent(sleep->eventHandle);
    * I. P( H$ G' o7 G

  26. 1 w* T& D% R1 c( C# i
  27.         return 0;
    3 }- T' x# F' O
  28. }
      ~) y' ~2 T0 U' C
  29. 9 n" t4 o& X! Q' t1 s0 ~; H
  30. //////////////////////////////////////////////////////////////////////2 x* k. p2 H6 N" {
  31. // Function  : XSleep()
    6 N4 W3 P# N5 _% ~7 g5 x" w
  32. // Purpose   : To make the application sleep for the specified time5 R( i0 Q9 d/ c
  33. //             duration.
    9 S" e0 _  z7 x- t+ I
  34. //             Duration the entire time duration XSleep sleeps, it& g( q+ r4 P+ {9 ?% o3 {3 h% y
  35. //             keeps processing the message pump, to ensure that all
    ( u0 Q1 a3 I# Q
  36. //             messages are posted and that the calling thread does" t5 @9 N9 T1 o9 D+ w
  37. //             not appear to block all threads!
    ) ?( {4 [7 H% J) t
  38. // Returns   : none+ j$ y" b% l3 s: d* q
  39. // Parameters:       - g% q3 G( E1 H: V
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds., v" G- i3 |  e
  41. //////////////////////////////////////////////////////////////////////
      T- }3 t: L" ]% V
  42. void XSleep(int nWaitInMSecs,int nAscll)2 ^7 I+ ?0 j; l, ]) ?
  43. {3 ?: M) O" ]  }4 a) R
  44.                
    + u! ]; R/ C0 W* m, c
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

2 e2 |5 L) A% n" W+ D' c, P0 v9 k$ _$ w
xsleep.h文件代码
3 D* w3 W% i$ }* W
3 P- \7 i* p0 t7 f
  1. //Download by http://www.cncml.com
    + Q9 |. B; @; S% B0 Z0 K8 {. f
  2. #ifndef _XSLEEP_H_! @7 P& X$ f6 a. S
  3. #define _XSLEEP_H_
    - d/ D' h9 ?* ~% C( U. w  I
  4. 9 L3 |7 `3 g/ [0 }! l$ V
  5. void XSleep(int nWaitInMSecs, int nAscll);
    - W1 m/ @% S% L. x; I, i" x" k* w7 U

  6. ( F4 A& b; x6 R' c+ v, c& t
  7. #endif // _XSLEEP_H_
    : B% B$ R& D8 k+ L7 d! R5 F8 ^
复制代码

/ c% G9 B/ c8 r/ A
8 n& c( M7 F/ @; ]0 Z! ^' o2 omfc中的调用代码如下/ [' f  P; h: b% [3 o/ c
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
& l: E/ v0 n! |4 X. S

+ V  j5 Z; A2 j2 @4 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 10:59 , Processed in 0.099992 second(s), 19 queries .

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