cncml手绘网
标题:
非滞后式延迟执行
[打印本页]
作者:
admin
时间:
2018-6-27 00:03
标题:
非滞后式延迟执行
方法如下
$ b; {7 O5 @0 I- ~8 P
建立 xsleep.cpp和xsleep.p文件
?( Q s; ]7 `$ k5 w. V' Y5 v2 u
xsleep.cpp文件代码如下
) d) A m3 C* a! B' p2 Z; H6 R
//Download by http://www.cncml.com
7 t: H& l# V# O
#include <windows.h>
) [, b7 C) d9 H; p& I2 y
#include <stdafx.h>
1 R. _- C; }0 [! W# L
3 v" q9 d4 ~9 S* [
// This structure is used internally by the XSleep function
5 I8 H3 K4 Z# j4 U5 j1 ^
struct XSleep_Structure
7 H) V8 k( J" m* U1 x3 n
{
# ^. c- X3 i, r% a+ k3 `: B
int duration;
! Q( W" k, z/ [! Q! z
HANDLE eventHandle;
% D1 c# `$ x3 ^8 k
};
- H# U5 P, q: c# p& ~0 \0 W
* b2 M1 X9 S& ?
; ?4 V; w4 J J0 J
//////////////////////////////////////////////////////////////////////
5 N" C9 D8 ~9 a- ^* s' r% N
// Function : XSleepThread()
: K. h7 ]. p' h
// Purpose : The thread which will sleep for the given duration
. O6 P( y9 [: O# d, `
// Returns : DWORD WINAPI
) y' P6 M; i8 A5 O" ?. a0 q
// Parameters:
( k2 P. }+ F- e$ T5 |6 i8 p& C- U7 i
// 1. pWaitTime -
' A6 t# Q, v" B
//////////////////////////////////////////////////////////////////////
! s: p( i; U, Y6 }( r; g+ b
DWORD WINAPI XSleepThread(LPVOID pWaitTime)
+ h5 I$ O6 l6 O3 h4 k& W/ h9 S
{
% o5 o* }) H ~4 V/ ~" j0 @
XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
5 Z2 l0 ~" r4 k" [5 r
- e7 L9 l* E8 Y) e2 N6 m
Sleep(sleep->duration);
5 |5 i5 S- b, I: a0 c0 b
SetEvent(sleep->eventHandle);
, Q( j% r2 A d; ?1 O. {) Y! T
7 W* u# x: n3 O
return 0;
C8 f7 i n$ ^' r3 G' D; }
}
/ h# U! x0 f) |- K
: e6 V* W% s$ U/ C1 w; i) }& k
//////////////////////////////////////////////////////////////////////
# w2 t( h" R% N. z& ]9 }; {; Q
// Function : XSleep()
( a' T/ r: m8 n$ \$ b, c
// Purpose : To make the application sleep for the specified time
4 H. r2 j; q% F- p8 F: ~% S5 c
// duration.
) a; g0 }0 t9 Q3 a
// Duration the entire time duration XSleep sleeps, it
/ @$ Z5 S6 u4 n2 p4 m
// keeps processing the message pump, to ensure that all
, b) Y }* N1 A
// messages are posted and that the calling thread does
% I& L* F! I1 k G
// not appear to block all threads!
! s4 `! t9 R: R7 P, H- h3 D
// Returns : none
$ x5 B, E! `5 }
// Parameters:
0 q# N0 Z- K. @
// 1. nWaitInMSecs - Duration to sleep specified in miliseconds.
, a* w4 I7 M5 V, L# q) f! H
//////////////////////////////////////////////////////////////////////
. m& T3 E& S) m( g. ^2 X) @
void XSleep(int nWaitInMSecs,int nAscll)
' a7 _( n0 R7 [
{
! ~$ r _% B" Y# }+ _3 ?
1 v& C8 o+ S0 f
<blockquote><span class="Apple-tab-span" style="white-space:pre"> </span>INPUT input[2];
复制代码
5 I: H; {1 h( j p* O9 n
6 B l4 n# l' x+ @/ k* A/ z; X
xsleep.h文件代码
( m' ^- N; H; h1 n* K' m
( s# ]# ^/ R( Z: Z3 Z3 Z! Y" l
//Download by http://www.cncml.com
7 r- E. Y& B. Q' U
#ifndef _XSLEEP_H_
2 `- E+ }) d# @9 L4 o2 S
#define _XSLEEP_H_
2 {3 M7 c/ a4 z* @7 k! [4 N. f
1 `# e: c A- V/ k3 k
void XSleep(int nWaitInMSecs, int nAscll);
( j4 S6 S& i) N+ Y7 E
( j. a. u# c# y+ B( J7 e) s
#endif // _XSLEEP_H_
?: R/ H8 U: U+ _. F3 |8 g
复制代码
; y, o% D* f& A# X
- R" J- t9 {; M1 w0 m3 j
mfc中的调用代码如下
2 i5 d9 y% T0 P A7 O/ c/ ^
int ascll;
复制代码
XSleep(500,ascll);
复制代码
* ?+ A+ O$ W* a. u% I
% A4 |7 ]! Q8 w9 A$ F: A! @
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2