cncml手绘网
标题:
非滞后式延迟执行
[打印本页]
作者:
admin
时间:
2018-6-27 00:03
标题:
非滞后式延迟执行
方法如下
1 f+ d7 R) \- T9 v4 V& V
建立 xsleep.cpp和xsleep.p文件
# n8 c6 r5 w+ N! Q6 R( z
xsleep.cpp文件代码如下
3 c8 Y8 q6 x( e
//Download by http://www.cncml.com
7 M. |0 U) H, c* a
#include <windows.h>
# Q6 j* M j) \5 l3 ~$ h
#include <stdafx.h>
, ]2 I7 F( j6 g: S0 k( n5 F/ N
4 x% q! J7 x6 ]6 t5 N# ^
// This structure is used internally by the XSleep function
' B8 { a! G( I- M0 j" Q
struct XSleep_Structure
+ }# P/ s6 S' s0 ~% r4 y6 ~
{
+ f" D4 X7 c# K- v4 ]
int duration;
: T; P0 p ]4 ]6 t. q+ T7 S
HANDLE eventHandle;
$ |( N! w/ F: l% a! | W" M
};
1 m* n8 ^) m: P4 T" n8 D8 s B
7 i1 _6 {/ z6 _. w( \
* ?- w" _$ p- V: c9 G+ r
//////////////////////////////////////////////////////////////////////
6 U2 l- q$ U, H3 T! {8 D+ k& ~
// Function : XSleepThread()
" v- o0 _& e. x4 R7 ?
// Purpose : The thread which will sleep for the given duration
. z0 \, E# R- L, _
// Returns : DWORD WINAPI
/ f6 J/ j( p: ?$ n% d& F
// Parameters:
( P4 k6 l& J6 g/ {
// 1. pWaitTime -
$ |1 I" j, {' a$ y6 }7 v
//////////////////////////////////////////////////////////////////////
' T. D, m" G9 c0 g( T
DWORD WINAPI XSleepThread(LPVOID pWaitTime)
& z/ ], h' A3 W( M0 K
{
) V7 j. ]5 O. g
XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
" Y' o/ m- W: q O2 e; b
8 A, ]$ y4 Y" d# F& O
Sleep(sleep->duration);
+ c9 l$ I( _3 q0 H0 A6 i& }/ n
SetEvent(sleep->eventHandle);
6 O7 E1 L+ t! u1 T8 p
! O+ r2 H2 E R: {0 ^: S
return 0;
7 N/ r7 W" O, u- ]
}
( r% ~" A: v$ e+ U' Z" t
~% D+ q6 s) u2 i) l
//////////////////////////////////////////////////////////////////////
9 N0 O/ N+ N: J* C# V+ H7 p
// Function : XSleep()
3 u# K& d+ |$ x# d @7 r6 a+ U4 ^. z
// Purpose : To make the application sleep for the specified time
: W! s, o% z- _$ Z; |; A
// duration.
; b' z4 Q3 a0 d: H* B' c H
// Duration the entire time duration XSleep sleeps, it
1 a, k6 |$ B0 k& ~$ {3 c" q
// keeps processing the message pump, to ensure that all
6 A* \3 r: H {" n
// messages are posted and that the calling thread does
' P @ u/ f. U5 @+ D% O4 s
// not appear to block all threads!
8 f4 c! [) x' h8 C5 _' g- b
// Returns : none
1 ]. |! q' ^7 r; \2 b
// Parameters:
- g$ [; x( Q% @% Z6 u
// 1. nWaitInMSecs - Duration to sleep specified in miliseconds.
* `# t$ w; b1 j+ \) q
//////////////////////////////////////////////////////////////////////
% n9 a# s2 F& |) O/ n( ^
void XSleep(int nWaitInMSecs,int nAscll)
% Z% |1 w; `' J/ q% R, z
{
9 F3 [4 X/ c/ ?' [1 e
- Q" k: @% o) i, |' t3 t
<blockquote><span class="Apple-tab-span" style="white-space:pre"> </span>INPUT input[2];
复制代码
1 V( i) l! X, e" @" V( ^" @; R
' X8 H: |$ _3 G& O3 j
xsleep.h文件代码
- a; j7 D( C( n3 ]( U; [ n
0 B, e4 ~: j. e
//Download by http://www.cncml.com
, g. r2 [+ L4 N$ m( g& ?! a
#ifndef _XSLEEP_H_
4 I4 ]+ w) ?7 ^* g/ D6 p
#define _XSLEEP_H_
) W8 T1 n6 ^0 L4 m. ^
# p" _6 N5 r# ]' E
void XSleep(int nWaitInMSecs, int nAscll);
Y* j" r5 g: K8 I) [9 \; M- h
$ o2 Y5 o) K, L5 B, C
#endif // _XSLEEP_H_
9 g* j3 u! t+ }6 Q4 p
复制代码
: R: c# o& ?. b F; u; S8 H6 T- K
( f6 |8 [( U5 ^. f, B2 e
mfc中的调用代码如下
+ {; d" C2 R1 A- I3 N
int ascll;
复制代码
XSleep(500,ascll);
复制代码
" s$ b: ~0 c+ C
3 L: f! r" ]* b9 x9 G$ f. b0 B
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2