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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下% i7 J; X! _* `& g: M
建立 xsleep.cpp和xsleep.p文件
- O: @8 K& E( ~/ _xsleep.cpp文件代码如下
# O1 R3 u- `- O: m& K8 s0 S! [& n
  1. //Download by http://www.cncml.com
    4 j2 Y# v( I2 V+ _+ Z
  2. #include <windows.h>
    * d: a( s; O9 T: ?! V  X
  3. #include <stdafx.h>* u& U6 w+ i! m6 x# j
  4. ( o8 f+ K; t* X8 ^
  5. // This structure is used internally by the XSleep function
      p: {3 i% W" u3 ?
  6. struct XSleep_Structure
    " [4 O$ N+ K4 ]9 n$ |: N! J9 {
  7. {
    & n0 w! A! O  L; {
  8.         int duration;/ O; I$ ~$ f; v) i; }
  9.         HANDLE eventHandle;' D% K6 }0 J/ W
  10. };6 j$ g2 Q' ~4 V2 t: Z/ T0 t

  11. , F! p2 w! f/ Z# Z/ ^
  12. , P, g- x' _. _5 J. y- i* ?
  13. //////////////////////////////////////////////////////////////////////! }, `$ \6 ^, u  g
  14. // Function  : XSleepThread()5 {" R  Q; y; e0 j2 R0 Z6 F
  15. // Purpose   : The thread which will sleep for the given duration6 g5 R2 Z: _/ ?9 t! E
  16. // Returns   : DWORD WINAPI; N2 {9 }' G/ [" F1 Y
  17. // Parameters:      
    ) V1 J& J+ c5 v
  18. //  1. pWaitTime -
    / _7 t6 q# D% Q% g5 F, {& D
  19. //////////////////////////////////////////////////////////////////////
    0 Q: x0 o! U- |# z2 e
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    9 X# G; g& C% d6 a
  21. {
    ' f# q2 r8 G2 j& [
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
    5 x: [( W4 \' `& A4 g4 P5 H) j  j

  23. 5 n4 T+ C9 T0 F0 a. ]' z$ [
  24.         Sleep(sleep->duration);
    6 ^1 s  D) y- w9 p3 M! I# j
  25.         SetEvent(sleep->eventHandle);
    - @+ C! W3 `) I7 Y' i
  26. 8 ~0 A" C7 D# Z
  27.         return 0;! u0 ]# @7 |: f- n; `+ k
  28. }
    , o( v5 N' f6 x8 E

  29. ( b$ m* h8 K( Z9 X$ X$ j' Z
  30. //////////////////////////////////////////////////////////////////////
    : D! s& {) W+ Y8 r% s/ F5 A3 I
  31. // Function  : XSleep()4 ^' R* v" X5 L8 a3 p5 c5 p! _
  32. // Purpose   : To make the application sleep for the specified time) ]) i( e8 k% i7 H8 A- O, |$ o
  33. //             duration.; i% E8 ?" `, {) _' a) [
  34. //             Duration the entire time duration XSleep sleeps, it  N6 s+ p0 V5 K4 \" q" i/ L
  35. //             keeps processing the message pump, to ensure that all
    1 w* T5 H  i" c4 Y$ a- \
  36. //             messages are posted and that the calling thread does  d6 |2 A" \; e7 O6 U
  37. //             not appear to block all threads!) M& p# B+ |+ \7 ?6 V8 Y% h9 Z  s# _
  38. // Returns   : none) j; a# C# Z3 {
  39. // Parameters:      
    $ }* j8 E; f6 c% L! u1 F4 a
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.. A0 O% P( ~9 }3 l
  41. //////////////////////////////////////////////////////////////////////! }% z. h! a/ K6 C1 c! X5 S
  42. void XSleep(int nWaitInMSecs,int nAscll)' [7 R) K; m; p2 I- h
  43. {
    & |8 d2 {% F  Q5 v/ ^
  44.                 7 |5 B! s) I# D, ], w1 [
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码
/ u# o! P1 v! N" G
+ M0 @# d1 Y& v5 U* p
xsleep.h文件代码# Y9 F* i( V0 g7 ^( j3 b; q0 b, P

: N3 `) s: W3 q3 {
  1. //Download by http://www.cncml.com" n. {& b, H* o
  2. #ifndef _XSLEEP_H_
    3 P5 F2 ?" v, \' O# e: _2 B1 b& r
  3. #define _XSLEEP_H_% y1 X0 K3 d1 }4 G2 K4 S

  4. 8 _; L" H: k2 t7 {8 v1 u. c
  5. void XSleep(int nWaitInMSecs, int nAscll);
    5 M* t( c" J1 P5 I! u. \

  6. 5 J  Z3 y+ |" |4 }
  7. #endif // _XSLEEP_H_) Y% C! n) c8 u9 i( k& p0 {; S
复制代码

4 i/ P0 W( H5 {! x2 Y% M1 b: j+ ?7 y0 M. s( @7 H0 x7 p' i" g
mfc中的调用代码如下
/ X" T* n# S* u3 M- ^
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

: _& f- l; w; t5 n8 C/ B. e+ @, M4 V9 ?/ ?/ J- ~' \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 11:47 , Processed in 0.122310 second(s), 19 queries .

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