cncml手绘网
标题:
非滞后式延迟执行
[打印本页]
作者:
admin
时间:
2018-6-27 00:03
标题:
非滞后式延迟执行
方法如下
- F& R0 r; ~$ i* z W, R) W
建立 xsleep.cpp和xsleep.p文件
$ y' K! v, R' F8 l. [, t H8 W
xsleep.cpp文件代码如下
* G4 s2 O' H; G
//Download by http://www.cncml.com
P0 x. g3 A3 `- c. _% c8 p
#include <windows.h>
9 y, f% a% E2 O) z/ [
#include <stdafx.h>
- v* v- d1 w6 ]
% B8 I; \6 [2 ?5 P: w3 n
// This structure is used internally by the XSleep function
9 i$ ~% s. r0 [, M: L
struct XSleep_Structure
9 f' E6 s) ]8 G) z1 ?1 K: Z
{
A. d0 Y; Y% q) O
int duration;
. M1 I0 g5 j8 P
HANDLE eventHandle;
" x; }% F! _4 g$ z" D1 c0 C1 U
};
- H; v( V, n' k) \& U
1 Z' P/ ^" y1 P; @
6 Z" E* i/ c6 _; m/ V7 J. X
//////////////////////////////////////////////////////////////////////
( e* G4 u. N+ @2 L' o0 Y! r" ~" H
// Function : XSleepThread()
; Z" y' S# k) w, Y5 t) |, x* _$ K
// Purpose : The thread which will sleep for the given duration
* X' ^9 M) p/ y1 l. l8 ^
// Returns : DWORD WINAPI
$ `" _0 a9 G; z: f) C% |# q' ^
// Parameters:
$ I1 A4 G+ Q( E5 W* x
// 1. pWaitTime -
& ]6 i* M# K1 L" X$ d6 F% [
//////////////////////////////////////////////////////////////////////
$ G. }4 I0 ~0 d; J% N
DWORD WINAPI XSleepThread(LPVOID pWaitTime)
% b$ |$ ?! k& b; f% r
{
3 \% d; k t" u! a8 Z I+ F, ]
XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime;
( `* W. [0 f. v$ Z/ s
% e" {8 F: B) y" E4 y
Sleep(sleep->duration);
9 K$ z) m- q- }- m e
SetEvent(sleep->eventHandle);
6 g" j m+ `2 }3 j1 L8 o
4 k; h W$ f3 r E8 `7 Z, k
return 0;
8 q$ k" J' N, A+ J/ g9 W1 g0 c1 e
}
. b* g2 p# f- `4 d6 g$ _
* i7 `2 O9 b o6 ^
//////////////////////////////////////////////////////////////////////
' {' t- M' I/ ]- X; D/ f
// Function : XSleep()
1 G$ ~2 c" k! i# y( X
// Purpose : To make the application sleep for the specified time
9 K5 z: p" x3 | J
// duration.
8 W0 J/ L% e/ D& k% X( Y0 p9 W. |
// Duration the entire time duration XSleep sleeps, it
! U: D9 x3 m2 @# f' S4 _$ b8 s3 l
// keeps processing the message pump, to ensure that all
0 \6 K! V! n* Y A6 J3 ]# b( |& n ^
// messages are posted and that the calling thread does
7 V: a6 W- Y4 ]7 K p; \
// not appear to block all threads!
/ U, F6 D C! I& \" c* Y8 r9 z: G/ n, J/ T
// Returns : none
) I: l# H" K: }/ m3 d1 ~
// Parameters:
5 F- F: N6 d1 x5 Z& e9 {, ~+ [6 A
// 1. nWaitInMSecs - Duration to sleep specified in miliseconds.
% y! I9 k9 U* l, c8 \
//////////////////////////////////////////////////////////////////////
& L: g% z5 w7 ^8 p7 ]* x" U0 @8 x
void XSleep(int nWaitInMSecs,int nAscll)
9 |! s8 n6 |' M( l
{
' O% g2 E. e% a5 u3 U |
* T! w0 S: _* ?+ Q" P+ Z
<blockquote><span class="Apple-tab-span" style="white-space:pre"> </span>INPUT input[2];
复制代码
' L! P5 c8 \- R. s
3 F/ V7 i/ j: K% m' i l; s8 C; t
xsleep.h文件代码
1 y! w( s- N2 }% G5 u! @! ^
$ [1 e) a' F7 v7 W
//Download by http://www.cncml.com
6 I$ Q3 c* u6 |$ D+ x6 h6 n9 X" H
#ifndef _XSLEEP_H_
! t' a% t8 \8 @0 C. {2 [2 r4 t/ u
#define _XSLEEP_H_
5 _0 J& O& o" I j, O' \2 D
% @5 o( U1 t( w' g$ Q5 p: B% r
void XSleep(int nWaitInMSecs, int nAscll);
5 a: O% v- A: J( X7 C4 p
- A7 }3 i( ^& @) L; n ^
#endif // _XSLEEP_H_
2 V. O0 k8 `( N( K- r+ O/ p
复制代码
/ T' z5 n4 C7 k4 c' y* w9 q! a
4 i/ O2 j# v, s& q2 L; \* _
mfc中的调用代码如下
, z: S# I6 W6 a- n- E4 y
int ascll;
复制代码
XSleep(500,ascll);
复制代码
! M' Y4 D! i3 t7 b; u9 P% k( M
% I4 z; O) A. W. t' }4 ^
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2