20 CMsg(UINT u, DWORD dw, __inout_opt LPVOID lp, __in_opt
CAMEvent *pEvnt)
34 static DWORD WINAPI DefaultThreadProc(__inout LPVOID lpParam);
54 m_ThreadQueue(
NAME(
"MsgThread list"), 5)
61 void virtual GetThreadMsg(__out
CMsg *msg);
70 if (m_hThread !=
NULL) {
71 WaitForSingleObject(m_hThread, INFINITE);
72 return GetExitCodeThread(m_hThread, lpdwExitCode);
78 return ::ResumeThread(m_hThread);
82 return ::SuspendThread(m_hThread);
86 return ::GetThreadPriority(m_hThread);
90 return ::SetThreadPriority(m_hThread, nPriority);
103 __in_opt LPVOID lpMsgParam, __in_opt
CAMEvent *pEvent =
NULL) {
105 CMsg* pMsg =
new CMsg(uMsg, dwMsgFlags, lpMsgParam, pEvent);
107 if (m_lWaiting != 0) {
108 ReleaseSemaphore(m_hSem, m_lWaiting, 0);
117 virtual LRESULT ThreadMessageProc(
118 UINT uMsg, DWORD dwFlags, __inout_opt LPVOID lpParam, __in_opt
CAMEvent *pEvent) = 0;
CMsg(UINT u, DWORD dw, __inout_opt LPVOID lp, __in_opt CAMEvent *pEvnt)
void PutThreadMsg(UINT uMsg, DWORD dwMsgFlags, __in_opt LPVOID lpMsgParam, __in_opt CAMEvent *pEvent=NULL)
__out_opt POSITION AddTail(__in OBJECT *pObj)
BOOL WaitForThreadExit(__out LPDWORD lpdwExitCode)
BOOL SetThreadPriority(int nPriority)
CGenericList< CMsg > m_ThreadQueue
virtual void OnThreadInit()