- int prio = p_internal->prio;
-
- p_internal->thread_id = CreateThread(NULL, 0,
- (LPTHREAD_START_ROUTINE)wxThreadInternal::WinThreadStart,
- (void *)this, CREATE_SUSPENDED, &p_internal->tid);
-
- if ( p_internal->thread_id == NULL )
- {
- wxLogSysError(_("Can't create thread"));
- return wxTHREAD_NO_RESOURCE;
- }
-
- int win_prio;
- if (prio <= 20)
- win_prio = THREAD_PRIORITY_LOWEST;
- else if (prio <= 40)
- win_prio = THREAD_PRIORITY_BELOW_NORMAL;
- else if (prio <= 60)
- win_prio = THREAD_PRIORITY_NORMAL;
- else if (prio <= 80)
- win_prio = THREAD_PRIORITY_ABOVE_NORMAL;
- else if (prio <= 100)
- win_prio = THREAD_PRIORITY_HIGHEST;
- else
- {
- wxFAIL_MSG("invalid value of thread priority parameter");
- win_prio = THREAD_PRIORITY_NORMAL;
- }
-
- SetThreadPriority(p_internal->thread_id, win_prio);
-
- ResumeThread(p_internal->thread_id);
- p_internal->state = STATE_RUNNING;
-
- return wxTHREAD_NO_ERROR;
+ p_internal->hThread = ::CreateThread
+ (
+ NULL, // default security
+ 0, // default stack size
+ (LPTHREAD_START_ROUTINE)
+ wxThreadInternal::WinThreadStart, // entry point
+ (void *)this, // parameter
+ CREATE_SUSPENDED, // flags
+ &p_internal->tid // [out] thread id
+ );
+
+ if ( p_internal->hThread == NULL )
+ {
+ wxLogSysError(_("Can't create thread"));
+ return wxTHREAD_NO_RESOURCE;
+ }
+
+ int win_prio, prio = p_internal->prio;
+ if (prio <= 20)
+ win_prio = THREAD_PRIORITY_LOWEST;
+ else if (prio <= 40)
+ win_prio = THREAD_PRIORITY_BELOW_NORMAL;
+ else if (prio <= 60)
+ win_prio = THREAD_PRIORITY_NORMAL;
+ else if (prio <= 80)
+ win_prio = THREAD_PRIORITY_ABOVE_NORMAL;
+ else if (prio <= 100)
+ win_prio = THREAD_PRIORITY_HIGHEST;
+ else
+ {
+ wxFAIL_MSG("invalid value of thread priority parameter");
+ win_prio = THREAD_PRIORITY_NORMAL;
+ }
+
+ if ( SetThreadPriority(p_internal->hThread, win_prio) == 0 )
+ {
+ wxLogSysError(_("Can't set thread priority"));
+ }
+
+ return Resume();