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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
方法如下" B# R& x' x' \! Q/ T
建立 xsleep.cpp和xsleep.p文件$ z& S$ ]$ b. I; |. h4 b
xsleep.cpp文件代码如下
" V0 u7 D9 J) }/ {
  1. //Download by http://www.cncml.com
    6 g2 I. @4 q& L4 c1 }& L
  2. #include <windows.h>4 y/ J/ v  J# O- ?# E$ k2 `
  3. #include <stdafx.h>
    $ H" {' p9 E* o
  4. # o4 g, ~) r* V5 b0 ^
  5. // This structure is used internally by the XSleep function : ]% m* w! B4 j" G- x, ~
  6. struct XSleep_Structure
    - J2 I. z) t' y( F
  7. {3 B/ z/ }- B% b
  8.         int duration;
    - T0 i" b: k# X$ P
  9.         HANDLE eventHandle;
    # @, M+ h6 ~! d# i$ r
  10. };
    / _4 w' x3 g# |1 y6 P- x. ~4 V0 A
  11. % `* Y! Q8 R$ Y
  12. 4 M; l& C2 t7 M
  13. //////////////////////////////////////////////////////////////////////1 l" p# ^& S; ^8 S
  14. // Function  : XSleepThread()
    ! _4 [6 `2 v' E
  15. // Purpose   : The thread which will sleep for the given duration
    & T# H' Y7 b% A) ~
  16. // Returns   : DWORD WINAPI
    / N2 }& n  h7 F7 i
  17. // Parameters:       " D. H( d2 `; t0 u) `% S, |
  18. //  1. pWaitTime -
    ) b' a4 U7 k) ^. f# p. ?# {
  19. /////////////////////////////////////////////////////////////////////// b3 j! r+ O. r3 P; i
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    , j0 u" P. G  R8 {8 N: T
  21. {8 d# @# b- ~) }) V: w$ }
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;1 `- ]3 C5 s0 M

  23. ) g# z- g& ?3 T! ]  Z# S
  24.         Sleep(sleep->duration);9 e7 e. ?# I- m! u' V
  25.         SetEvent(sleep->eventHandle);
    " U0 Y2 P" b0 ]4 S! r5 Y

  26. 1 z: T: D) [8 f: W/ M3 N6 w
  27.         return 0;9 |! h! X2 m! Z1 `/ A
  28. }+ _* k" m" }: Q, \- b1 E

  29. . h* X! u, A* N1 j/ N7 `  e
  30. //////////////////////////////////////////////////////////////////////$ Q# |& T# C7 G% s
  31. // Function  : XSleep()8 P7 L: J( q8 H6 Y" p  ~& l
  32. // Purpose   : To make the application sleep for the specified time  ]6 v' _- _  d2 Z! i4 f5 u
  33. //             duration.
    ( e& u7 s/ @( |( O
  34. //             Duration the entire time duration XSleep sleeps, it
    9 h- @. ?7 b0 R1 f4 o
  35. //             keeps processing the message pump, to ensure that all
    4 p5 h5 |" E; v
  36. //             messages are posted and that the calling thread does
    8 ]3 q# |8 J) H) z; b! |4 [/ M
  37. //             not appear to block all threads!' z+ m1 v+ X. {; @6 e
  38. // Returns   : none
    - U5 O# {; ?9 F, l! Y% d
  39. // Parameters:       0 h0 ?3 b3 m. K# G0 N1 U( H2 x
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    8 O7 P- D9 I+ `. h
  41. //////////////////////////////////////////////////////////////////////
    9 p. b% D& h! |  }% t+ T
  42. void XSleep(int nWaitInMSecs,int nAscll)
    7 b( I" T% C" j. ]3 g
  43. {: d& H; {4 X6 x% z
  44.                
    : g; i+ a0 i+ z$ ^
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

" N" P* z7 F- ^  m
6 I, \0 K% v0 k( w/ t( N5 c- Dxsleep.h文件代码* S( p9 a5 `/ [* Y, _+ x9 b5 h1 @

: [/ U! v, S' P! @$ j; s
  1. //Download by http://www.cncml.com* ]4 k; }" F* m1 |
  2. #ifndef _XSLEEP_H_
    / s1 l4 ?7 S  G1 C1 S: A
  3. #define _XSLEEP_H_
    3 @: e: T& i2 d1 N0 s% D6 `

  4. 5 L* M- w, R! N! @! F1 j5 X2 O& V
  5. void XSleep(int nWaitInMSecs, int nAscll);
    - E& p$ H/ x1 S, f2 ?+ V
  6. 0 y7 n3 w3 E- I  X4 ^& y
  7. #endif // _XSLEEP_H_
    2 t0 X4 Y4 }! Z, H8 p, e8 e* S
复制代码

/ j+ _7 `3 j+ z2 y
5 x# H& y9 K; Pmfc中的调用代码如下
; F1 x% Q* i9 a! _* U
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码
( a1 a3 ~3 R7 `5 E( t3 i5 q

) I+ n5 \4 `3 Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:47 , Processed in 0.066253 second(s), 20 queries .

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