You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.6 KiB
78 lines
1.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
// WinIdle.h - Defines a class for sending idle messages to a window from a secondary thread |
|
|
|
#ifndef __WINIDLE_H__ |
|
#define __WINIDLE_H__ |
|
|
|
|
|
class CWinIdle |
|
{ |
|
protected: |
|
HANDLE m_hIdleEvent, m_hStopEvent; |
|
|
|
HWND m_hWnd; |
|
UINT m_uMsg; |
|
WPARAM m_wParam; |
|
LPARAM m_lParam; |
|
|
|
DWORD m_dwDelay; |
|
|
|
HANDLE m_hIdleThread; |
|
|
|
// The thread calling stub |
|
static DWORD WINAPI ThreadStub(LPVOID pIdle); |
|
// The actual idle loop |
|
virtual DWORD RunIdle(); |
|
|
|
public: |
|
CWinIdle(); |
|
virtual ~CWinIdle(); |
|
|
|
inline DWORD GetDelay() {return m_dwDelay;} |
|
inline void SetDelay(DWORD delay) {m_dwDelay = delay;} |
|
|
|
// Member access |
|
virtual HANDLE GetThreadHandle() const { return m_hIdleThread; }; |
|
|
|
// Start idling, and define the message and window to use |
|
// Returns TRUE on success |
|
virtual BOOL StartIdle(HWND hWnd, UINT uMessage, WPARAM wParam = 0, LPARAM lParam = 0, DWORD dwDelay = 0); |
|
// Stop idling |
|
// Returns TRUE on success |
|
virtual BOOL EndIdle(); |
|
// Notify the idle process that the message was received. |
|
// Note : If this function is not called, the idle thread will not send any messages |
|
virtual void NextIdle(); |
|
}; |
|
|
|
|
|
// Used to slow down the idle thread while dialogs are up. |
|
class IdleChanger |
|
{ |
|
public: |
|
IdleChanger(CWinIdle *pIdle, DWORD msDelay) |
|
{ |
|
m_pIdle = pIdle; |
|
m_OldDelay = pIdle->GetDelay(); |
|
pIdle->SetDelay(msDelay); |
|
} |
|
|
|
~IdleChanger() |
|
{ |
|
m_pIdle->SetDelay(m_OldDelay); |
|
} |
|
|
|
CWinIdle *m_pIdle; |
|
DWORD m_OldDelay; |
|
}; |
|
|
|
|
|
|
|
#endif //__WINIDLE_H__ |
|
|
|
|