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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下& d# k3 B* Z- e2 R5 d1 z! i
建立 xsleep.cpp和xsleep.p文件0 T5 q' b" K: \- X& d1 w
xsleep.cpp文件代码如下3 Y# W7 A4 y  _* d% M& z1 Q
  1. //Download by http://www.cncml.com. B/ L: [/ Z# `/ G* n9 L- _) i$ Q* {
  2. #include <windows.h>* u' P* e% [% u9 N) f" T
  3. #include <stdafx.h>+ F/ {6 j, @! j+ ]
  4. 1 I  K7 `! l* K3 ~" q: d
  5. // This structure is used internally by the XSleep function 3 y4 W! s2 S, G! N3 I/ f
  6. struct XSleep_Structure; `% l' o, G6 ^" P$ _8 H) A/ z1 E
  7. {
    3 c, k# m: p2 |" D
  8.         int duration;4 f( r' k# Y2 R- e
  9.         HANDLE eventHandle;
    & N3 Q5 E0 O7 E+ N- ~( ]- v
  10. };- q. @/ {, N# Z, J, Q3 X
  11. 4 c& `2 c# E  {9 N
  12. 7 b: W6 L. t8 r  F( V
  13. //////////////////////////////////////////////////////////////////////
    " E; a+ m& Z+ H/ A
  14. // Function  : XSleepThread(): X7 R% {. k6 K
  15. // Purpose   : The thread which will sleep for the given duration4 A2 j2 h0 N+ B, p3 Y# s  \0 t, ~5 L
  16. // Returns   : DWORD WINAPI' @+ m) |2 D7 y9 `
  17. // Parameters:      
    ( D% r+ _+ N* J/ t) a! P
  18. //  1. pWaitTime -
    - {  I  E( z" P# z6 h
  19. //////////////////////////////////////////////////////////////////////
    & [5 a$ I0 H7 E$ z! ]% f6 W
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    + s* B; g: j" [# {7 r
  21. {
    ; c$ f7 l# m( t5 ~" p3 B! u
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    ( q( S5 J- |2 Q! Z9 `$ B5 ^# H* r* b1 c; M

  23. ( G2 ^8 H8 P# E1 I" h
  24.         Sleep(sleep->duration);' U6 Z+ {8 Q: `3 m: t/ E. v
  25.         SetEvent(sleep->eventHandle);% D- B$ b, r) c0 S1 \4 g4 |3 o- I4 Q% a
  26. $ `4 i6 n8 j) t# J. t( M/ u
  27.         return 0;& x4 V" k% ^! o0 ?
  28. }
    + F: w4 [/ |5 a4 y' H; i
  29. $ V" M0 n. b4 T- f7 g% X& a
  30. //////////////////////////////////////////////////////////////////////# s) ^7 U  H9 d/ D! S9 R, Y
  31. // Function  : XSleep()
    / E  t7 ^9 l' L" \. k9 V+ C  ?5 U
  32. // Purpose   : To make the application sleep for the specified time1 D7 i( R2 E5 w' v
  33. //             duration.
    2 D7 s/ A/ z* m6 D% z: j0 Q
  34. //             Duration the entire time duration XSleep sleeps, it8 ^- ~& x2 M# c" ^. w' R
  35. //             keeps processing the message pump, to ensure that all
    # Z# j1 q# U/ z8 U  S' Z0 G, ^
  36. //             messages are posted and that the calling thread does* g% ], q4 x/ S) H
  37. //             not appear to block all threads!
      J1 K! D' [7 n
  38. // Returns   : none
    % q0 ?; V# |( E4 a
  39. // Parameters:       8 P4 q4 B! z7 s$ q; A6 e5 o
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    ! P' S; F' O: S2 Q: H
  41. //////////////////////////////////////////////////////////////////////
    $ f+ g( A. j! g2 \1 P
  42. void XSleep(int nWaitInMSecs,int nAscll)+ m0 F8 k& O; z5 Z
  43. {
    & a7 Y" H  y: f2 r6 [
  44.                
    " @& y0 |7 Q$ ?4 X
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
  e* V  a' z. g# o3 L2 ]* Y
% c" |+ ?  N$ m5 j. E  _5 {% {
xsleep.h文件代码
5 B: B, J# N% n- H! }$ A2 @5 X
% M4 \" K# R7 X' q% C5 a$ B4 [6 o
  1. //Download by http://www.cncml.com
    . e1 `  ]: I3 E. t- M
  2. #ifndef _XSLEEP_H_
    # [, M4 m* M$ A
  3. #define _XSLEEP_H_+ z8 G9 M$ }# H! H' {5 ~9 J
  4. 2 L/ m3 M4 }2 ^( P
  5. void XSleep(int nWaitInMSecs, int nAscll);& C3 f( V) `' c3 p. K

  6. 0 Q+ Z8 L6 G! ^
  7. #endif // _XSLEEP_H_" O, g' Q  V! p* l  I& o
复制代码

' p7 M/ R' G. ?+ [+ Q8 u3 V9 r; F0 X1 o9 {
mfc中的调用代码如下4 W- T# M% J+ S- }! Q
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
3 O* [( @, R- o
$ v7 M) d. J! j* k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:02 , Processed in 0.052256 second(s), 20 queries .

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