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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下$ T# s- S; Z6 l& L) p
建立 xsleep.cpp和xsleep.p文件
9 a( {$ T% @) |' b2 _. Zxsleep.cpp文件代码如下
5 t6 H2 A9 k5 b1 ^
  1. //Download by http://www.cncml.com, a4 [# r0 @2 I- ^
  2. #include <windows.h>0 q, O/ N$ v5 h; p4 W6 Q# G
  3. #include <stdafx.h>
    ; B+ z' D2 ?, _/ U/ l
  4. 9 x# {. `5 E9 j1 W
  5. // This structure is used internally by the XSleep function " ?! K% g* K$ u: d
  6. struct XSleep_Structure
    # {# Q2 w: |2 S( a
  7. {
    + u7 a' w- }5 I; S
  8.         int duration;& N( \! A: Y& z7 d4 \
  9.         HANDLE eventHandle;) ^/ @1 b) [2 S  q# a: F) c
  10. };0 N3 ]/ j% I' c, K$ R; p! ]% q
  11. 8 G& ~3 c2 Q) K( B4 P6 ~7 ^& v
  12. ( `( J3 l; g( \' e6 r. W/ r# y0 g
  13. //////////////////////////////////////////////////////////////////////3 m* ?6 B7 e5 j8 K" o/ o
  14. // Function  : XSleepThread()& z: h1 T  c" k) C! J% t% [
  15. // Purpose   : The thread which will sleep for the given duration5 `9 f, Q- a3 H, A- [
  16. // Returns   : DWORD WINAPI) X1 J8 U" g2 Y: E( S9 @% Y- _
  17. // Parameters:      
    . V* K9 J2 F0 ]" F
  18. //  1. pWaitTime -
    6 N3 r0 J% ^* o6 f2 s
  19. //////////////////////////////////////////////////////////////////////0 v- O) S+ G9 g! W) ]/ W2 F
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    2 f+ Y8 d% p) T8 L" T
  21. {" R- K, m/ V8 F
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;7 A# Y( j$ d2 ~/ h: Y6 o: i

  23. . A1 n# g  K! A2 N- p1 j7 C! T
  24.         Sleep(sleep->duration);* }1 h3 l7 M4 t- M' u2 ^# X
  25.         SetEvent(sleep->eventHandle);
    $ i, U; V  n4 j$ l' }+ K

  26. 6 v2 {( Y: i" q- e# A% p1 W  b  S
  27.         return 0;* T& c) G8 `: L$ S
  28. }) N: b3 B% I" g2 V( e/ l

  29. & w2 M, P' v/ j5 U5 P
  30. //////////////////////////////////////////////////////////////////////& D1 W/ o- ^2 q3 Q2 V- L
  31. // Function  : XSleep()8 U! [0 N8 r* V' ^2 e1 N
  32. // Purpose   : To make the application sleep for the specified time& s: l1 V! n5 g9 Y/ y
  33. //             duration.6 z# G5 M) `9 a! Y$ V
  34. //             Duration the entire time duration XSleep sleeps, it" u* ^  k: I4 S5 d9 z5 }
  35. //             keeps processing the message pump, to ensure that all
    ! C, S, Q9 \# ]1 I" ]; Z, c
  36. //             messages are posted and that the calling thread does9 s7 x7 f1 Y' c
  37. //             not appear to block all threads!
    8 M7 |, ]% n- G8 M9 D
  38. // Returns   : none+ K, V: z  o; W3 V$ r
  39. // Parameters:      
    : V6 W) _% O+ h) i: b' R1 N; H
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    2 F* g0 n; Q3 _) H' n8 [5 x
  41. //////////////////////////////////////////////////////////////////////
    / @$ i! T1 T! p2 c0 M
  42. void XSleep(int nWaitInMSecs,int nAscll)  r; R0 x$ M- L1 A$ v5 z$ M
  43. {+ S4 B" V! k, q& T! ]( y; p" z
  44.                
    ) r8 E; N$ Y- M4 e6 |; Q
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
( ^9 s4 F+ u1 |$ m$ }7 ^
/ @# X+ S7 \( ~, c# E" y
xsleep.h文件代码
2 D( v4 j  w* H$ u
6 o; J8 X+ U3 w
  1. //Download by http://www.cncml.com' p# V) S3 ~" W. d* ~" }' \
  2. #ifndef _XSLEEP_H_( Y5 y8 h, D  }
  3. #define _XSLEEP_H_. L/ o, b5 p- }0 @2 c
  4. 8 w4 |! G, J/ ~# m
  5. void XSleep(int nWaitInMSecs, int nAscll);) J4 o7 q4 N* T3 e4 \
  6. # c1 F0 L8 L+ h* l' a0 n5 [* R+ N
  7. #endif // _XSLEEP_H_
      |! p6 r4 ]7 n& N" T+ U# P/ j8 }) J1 q
复制代码

% U, a4 a) L2 u: |) y) H9 M* S; e# e( Y2 B
mfc中的调用代码如下) N1 B2 M& g2 {, G' g; \- q
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

. |" L0 Z, D2 z* H+ t) o) y$ j9 j
7 U5 w+ w% A8 t$ C2 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 15:46 , Processed in 0.119197 second(s), 19 queries .

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