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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
方法如下
9 X1 Y* j$ o9 ]9 ~& Y建立 xsleep.cpp和xsleep.p文件
/ V( R$ O& [* y/ [xsleep.cpp文件代码如下
4 S, n* B* V, D; p! Y4 Q
  1. //Download by http://www.cncml.com
    : f  u5 J7 M9 k4 Q" K2 s# v
  2. #include <windows.h>+ p+ ^0 p8 ~0 m: x) G$ s, T
  3. #include <stdafx.h>6 x) g- S1 H# U* s. E" H& S" z

  4. 4 ^- }% I  N- k
  5. // This structure is used internally by the XSleep function
    . o+ j& \: w$ ~0 |
  6. struct XSleep_Structure3 Z) V" @$ E( @* O0 _
  7. {7 B1 ~2 P7 Y; p& M2 u# U: u9 J7 Z
  8.         int duration;! D+ S& g  |, T' _
  9.         HANDLE eventHandle;- [0 I- j  L( |+ V' C
  10. };$ J( @  k+ n* e' F

  11. * K: q9 O6 F6 }% o; j( T3 J

  12. % J. j% B. Q! W
  13. /////////////////////////////////////////////////////////////////////// b6 h2 b3 D0 V
  14. // Function  : XSleepThread()5 X, L: e6 Q+ \1 v% b
  15. // Purpose   : The thread which will sleep for the given duration
    + @0 {7 y% H& _' V3 _
  16. // Returns   : DWORD WINAPI
    1 B6 d/ u8 i+ U' l4 `: p
  17. // Parameters:      
    ( I6 v+ X: Z8 N! t  z
  18. //  1. pWaitTime -% l8 w0 o) V. y( Y2 E8 A
  19. //////////////////////////////////////////////////////////////////////! i2 ^& e: }3 j! G/ S1 \8 F: j
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    3 K8 d! @# E5 W  T7 P  z' c
  21. {
    , I$ u* V; T# a& P- v
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    " }4 ^( \* Q1 P) r9 b" w
  23. / a# k. C: k. t, p
  24.         Sleep(sleep->duration);
    0 \0 l" n, l, N% l8 [5 P8 L
  25.         SetEvent(sleep->eventHandle);
    1 ]; M; q+ L6 i% ~9 _2 u7 p

  26. . N% e3 z! s4 e* w+ L3 V7 o6 c
  27.         return 0;
    , W, G- h* `2 F
  28. }) ~1 C( Q: ~0 n6 r

  29. # H! e& r; W8 o2 m; i: A
  30. //////////////////////////////////////////////////////////////////////
    5 v; l% G0 [+ X0 O2 e2 L  M
  31. // Function  : XSleep()
    8 f( h7 S  \1 [9 @& ]. e
  32. // Purpose   : To make the application sleep for the specified time$ v* n! \' Y  y
  33. //             duration.- o9 C4 i4 F: W. V% p1 p
  34. //             Duration the entire time duration XSleep sleeps, it% W1 d3 s/ w" w2 G
  35. //             keeps processing the message pump, to ensure that all* |; X  w+ m( ~- E+ |* ^- i
  36. //             messages are posted and that the calling thread does
    $ i0 e: V8 |' H( ~! p2 L
  37. //             not appear to block all threads!
    3 {/ j3 \4 ^" Q( }$ k8 K
  38. // Returns   : none
    : U, Y% G7 y3 x- r5 q# K
  39. // Parameters:      
    8 l- a+ J: }3 w! M2 G5 \2 j; w
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.  j" p. Q- @$ P6 j/ O6 Z' I
  41. //////////////////////////////////////////////////////////////////////# g, q6 o( ~4 \1 H
  42. void XSleep(int nWaitInMSecs,int nAscll)' W# H" z7 T- ~0 S' o- {
  43. {' c4 ^( D) v$ L1 @* f4 [
  44.                
    , q0 B  ]5 ]7 b( ]. s! U2 T
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

( T7 u; Y3 c2 O7 ]2 P2 k1 T  \4 Q/ r% L7 ?; w
xsleep.h文件代码: d. f" M& p. D7 K+ x9 a

( n3 Y# p2 B3 c( m5 L/ J& k
  1. //Download by http://www.cncml.com6 C2 l) u& U, a# {+ z: f& l4 v; I
  2. #ifndef _XSLEEP_H_; n1 Y# ]5 S% h/ g0 \
  3. #define _XSLEEP_H_
      y/ J  n: R4 O5 B0 N8 ~/ r
  4. , w; ?, j5 |# V; [  |; p; j
  5. void XSleep(int nWaitInMSecs, int nAscll);
    ' R. b# x; }: l0 c# P& ~

  6. ( t4 Q% n. H* J
  7. #endif // _XSLEEP_H_' i& `! A* S3 U, x# s
复制代码
: p* H3 x6 R/ B2 I1 k! A

8 x9 ]0 p. n$ F! o% f6 J8 J( fmfc中的调用代码如下
9 K% u! s! f6 V! `
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

4 |" k2 F9 p* L# P5 G6 ~% i5 d" @- t+ _5 d. x0 |$ b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:38 , Processed in 0.052935 second(s), 20 queries .

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