cncml手绘网
标题:
非滞后式延迟执行
[打印本页]
作者:
admin
时间:
2018-6-27 00:03
标题:
非滞后式延迟执行
方法如下
v* u8 {6 P. y# P
建立 xsleep.cpp和xsleep.p文件
4 T( D5 |1 ~/ R0 ]) I9 k
xsleep.cpp文件代码如下
$ _% \. F' [+ ~5 e) {7 p
//Download by http://www.cncml.com
Q% f8 h2 v/ c0 {! O
#include <windows.h>
3 U M' z+ o; q! W: `" B+ Q
#include <stdafx.h>
- U: g6 X& k5 [' s5 b }
$ C( A0 w7 G0 i3 G! M) N0 Z
// This structure is used internally by the XSleep function
4 A# c8 q6 g; M0 s9 M% N+ R
struct XSleep_Structure
. r- n: C: P8 ^2 c% [- Q
{
0 b2 l/ O n5 M& T. a6 s
int duration;
$ H- B+ n; L8 u/ O" c* J3 c3 e
HANDLE eventHandle;
) w7 F( @, B! R. x# ]
};
: n& s8 ?" ]+ r1 x3 Y& V6 Z
! D- |9 }. g$ g1 i. Z5 V; Y
1 m/ \5 j" G# H3 e
//////////////////////////////////////////////////////////////////////
' R+ l' B% q% B2 a
// Function : XSleepThread()
, d' u: x3 q, u' l
// Purpose : The thread which will sleep for the given duration
8 ]: F: N* L- k9 E7 R- P
// Returns : DWORD WINAPI
1 t$ J( p8 h2 A; I
// Parameters:
5 p7 b/ C; {- H3 m
// 1. pWaitTime -
0 M: v3 ~# F; h1 X$ U0 x
//////////////////////////////////////////////////////////////////////
4 k4 {" Z, t1 x) Q( e1 Z
DWORD WINAPI XSleepThread(LPVOID pWaitTime)
4 }* p+ |) E3 ~# p$ L8 y( A" X: S& q
{
! y/ U" P+ {% r, e Q) i
XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
( [' S& x; s! a$ s4 `
, h$ L) o1 ~+ ~3 x. d3 B2 ^
Sleep(sleep->duration);
$ o# C4 D# v# t2 w" C. l
SetEvent(sleep->eventHandle);
! j! S: l( f$ p0 v& D
1 N( Y# F) h; L" o4 ]+ X# J
return 0;
- F+ E+ e: h& E
}
6 d- T0 a: R9 C+ E# w- A
5 F* r+ T: S8 ~6 @/ ^8 k3 A5 q
//////////////////////////////////////////////////////////////////////
0 y% J# f% o9 X1 P2 D
// Function : XSleep()
; T$ w5 z( P( A6 R7 d' q5 ~
// Purpose : To make the application sleep for the specified time
w; i+ R1 h; n* N
// duration.
% Z: t( w. o' Z* m0 A
// Duration the entire time duration XSleep sleeps, it
L/ }7 }/ B4 q% g$ `* z# [ @
// keeps processing the message pump, to ensure that all
$ {. k4 f6 t$ B( R; z
// messages are posted and that the calling thread does
; U2 h" }3 J) a1 d3 d
// not appear to block all threads!
6 I. G' R& {9 [2 R# t
// Returns : none
5 S9 ^& E. C; Y. [( p
// Parameters:
4 E5 C: \$ \; H
// 1. nWaitInMSecs - Duration to sleep specified in miliseconds.
& j: X" P- l4 z# Q
//////////////////////////////////////////////////////////////////////
+ m0 v' G, i* L
void XSleep(int nWaitInMSecs,int nAscll)
. E9 d' I' Z f, w
{
1 w. [% E( ]! Q0 s( c. `: O# x
2 [' ~: ^/ N# r: B
<blockquote><span class="Apple-tab-span" style="white-space:pre"> </span>INPUT input[2];
复制代码
9 G9 E% E# }# A* y% k
* V' Z! a7 \+ F9 K4 n6 o
xsleep.h文件代码
C! @3 o- h4 f* l& D# j1 H
9 Y4 p, \! A5 x1 U: _
//Download by http://www.cncml.com
7 @* z& |1 {. @, r) D {
#ifndef _XSLEEP_H_
T* n6 O* i& a% Z7 B0 R
#define _XSLEEP_H_
8 s- s+ Y' b4 K% w
/ d7 N% `" O2 l% Z
void XSleep(int nWaitInMSecs, int nAscll);
* f4 c8 W3 m2 l W& }7 @6 ^. p h$ Z
3 p+ e: X, O3 z) w Y* C0 Y
#endif // _XSLEEP_H_
- J. e' r+ Y3 w# L( L# O. L0 n
复制代码
( z P$ g$ Q& N' t
: h" A1 T3 k& X: ]! z9 a* h
mfc中的调用代码如下
/ |% Z- A) t- ], x! m
int ascll;
复制代码
XSleep(500,ascll);
复制代码
$ H, Q, @: e/ O5 i. B
/ v. c" a) Q. i/ H* ]7 K# p
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2