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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:03:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
方法如下7 R- ~7 u7 U; R# s. N! d
建立 xsleep.cpp和xsleep.p文件- F) `5 Y& f. ^9 T; @
xsleep.cpp文件代码如下8 r4 O; V) v3 j: A  S- T0 I
  1. //Download by http://www.cncml.com+ @3 p  Z3 e) C1 E4 O* l8 ], \
  2. #include <windows.h>
      R8 D! {; W" d" |9 Q- K7 D
  3. #include <stdafx.h>
    & z. [* u$ p- o2 J

  4. $ H  m" R; A9 [0 s
  5. // This structure is used internally by the XSleep function
    + n: s  L1 E0 C7 N
  6. struct XSleep_Structure: O; m: Z5 `2 h$ C, }+ a0 j3 g
  7. {
    2 a" ?) d; x; q& u
  8.         int duration;
    . n& q  F3 t% Q* S/ N7 T
  9.         HANDLE eventHandle;
    9 N3 H" B( ~# g  v3 c  g
  10. };
    # k2 U6 h) {: q9 r) ?2 Q

  11. - @2 N1 N$ r. Y' k$ y# [4 M

  12. 9 Z) [7 w/ p: U( f9 A/ T1 {
  13. //////////////////////////////////////////////////////////////////////
    9 X  W, X( l" k( v7 _* L3 t- @6 _
  14. // Function  : XSleepThread()
    9 ~  ]' ?, `$ T  [9 m+ q5 t
  15. // Purpose   : The thread which will sleep for the given duration0 v1 S$ a5 L5 v$ k  C
  16. // Returns   : DWORD WINAPI
    4 Q- t: C9 R: B7 Z  K  b
  17. // Parameters:      
    0 j0 g% x4 B9 N# Q! ^& `. J$ P: o
  18. //  1. pWaitTime -% n! u6 u4 Z5 m0 U
  19. //////////////////////////////////////////////////////////////////////  u/ |- G5 O4 c/ P
  20. DWORD WINAPI XSleepThread(LPVOID pWaitTime)
    6 [% \* ]# h# Q% a# }2 }& M7 X$ Y
  21. {
    5 d! r: o- W# x, _/ v0 ^" B% F7 f
  22.         XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;( Q$ B) ?; H: |- H3 {9 ?! [
  23. 4 ]% x+ J8 s" {" i/ p
  24.         Sleep(sleep->duration);
    0 E' b, e! M' M. |5 L% b! u/ _! o
  25.         SetEvent(sleep->eventHandle);
    - R# p( ]0 R- a, \5 B

  26. . Y+ c9 H  D, ?4 h/ q8 Z1 K
  27.         return 0;
    ! a+ i/ K5 Q: E2 S6 ?3 }
  28. }
    ) K; m8 l  R3 c6 _! d
  29. - }' }1 @. H6 l9 O: {
  30. //////////////////////////////////////////////////////////////////////. U5 @# n3 _% x# M
  31. // Function  : XSleep()& l, E4 F- E% B0 R: `1 b3 N% O. Y( T' x3 s
  32. // Purpose   : To make the application sleep for the specified time% W/ }/ s! {  _" ]1 A
  33. //             duration.
    ! W! O9 e2 k& `# `) @. U" r
  34. //             Duration the entire time duration XSleep sleeps, it
    9 T% B8 @& ~- N" l( c, T. G
  35. //             keeps processing the message pump, to ensure that all2 l- z, }$ {* [2 C
  36. //             messages are posted and that the calling thread does7 p$ L# O4 @! a; C" M, b: A* h5 k. p
  37. //             not appear to block all threads!
    0 ?! n9 M; C+ ]
  38. // Returns   : none
    4 H) L! J; I: {( C- P! s0 j& M
  39. // Parameters:       ( k7 L: |" A* E$ C
  40. //  1. nWaitInMSecs - Duration to sleep specified in miliseconds.
    . f; x+ a' x" P: l0 n
  41. //////////////////////////////////////////////////////////////////////$ E  f( b4 g& c. ~1 [8 z! G
  42. void XSleep(int nWaitInMSecs,int nAscll)
    : ~- M; ^: b0 {& h
  43. {
    ! m* \( u0 y5 J
  44.                
    4 k& H6 u. ?2 A
  45. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>INPUT input[2];
复制代码

! l4 j$ G+ V( _* p- y  \, O8 X& f, V, L
xsleep.h文件代码/ i6 {2 a& Q; \( f$ @

$ m% ~: C/ I/ f* z$ n: c: k
  1. //Download by http://www.cncml.com+ |$ a1 Z' g2 {
  2. #ifndef _XSLEEP_H_7 }4 S: a& v  z
  3. #define _XSLEEP_H_+ P+ {8 J0 ~9 v7 w( y
  4.   O: Q/ G$ t3 }
  5. void XSleep(int nWaitInMSecs, int nAscll);  H3 @; |' g! D& W1 J
  6. + V+ x  Q+ F% d0 v  H0 j) J" e
  7. #endif // _XSLEEP_H_
    ( F3 ]  t# w5 O4 J/ J
复制代码

% n/ Y2 j/ J5 Z3 Y5 l. u& h  y: X8 r' P4 Y
mfc中的调用代码如下
0 ?! Y3 @& N4 E! @6 p* h
  1. int ascll;
复制代码
  1. XSleep(500,ascll);
复制代码

% m0 }% h+ m9 [* d, R" z/ H$ V- E% |6 g7 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:53 , Processed in 0.059214 second(s), 19 queries .

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