CWinThread
수업
애플리케이션 내의 실행 스레드를 나타냅니다.
구문
class CWinThread : public CCmdTarget
멤버
공용 생성자
속성 | 설명 |
---|---|
CWinThread::CWinThread |
CWinThread 개체를 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
CWinThread::CreateThread |
개체 실행을 CWinThread 시작합니다. |
CWinThread::ExitInstance |
스레드가 종료되면 정리하도록 재정의합니다. |
CWinThread::GetMainWnd |
스레드의 주 창에 대한 포인터를 검색합니다. |
CWinThread::GetThreadPriority |
현재 스레드의 우선 순위를 가져옵니다. |
CWinThread::InitInstance |
스레드 인스턴스 초기화를 수행하도록 재정의합니다. |
CWinThread::IsIdleMessage |
특수 메시지를 확인합니다. |
CWinThread::OnIdle |
스레드별 유휴 시간 처리를 수행하도록 재정의합니다. |
CWinThread::PostThreadMessage |
다른 CWinThread 개체에 메시지를 게시합니다. |
CWinThread::PreTranslateMessage |
메시지를 Windows 함수로 디스패치하기 전에 필터링하고 TranslateMessage DispatchMessage . |
CWinThread::ProcessMessageFilter |
애플리케이션에 도달하기 전에 특정 메시지를 가로채는 경우 |
CWinThread::ProcessWndProcException |
스레드의 메시지 및 명령 처리기에서 throw된 처리되지 않은 모든 예외를 가로채는 경우 |
CWinThread::PumpMessage |
스레드의 메시지 루프를 포함합니다. |
CWinThread::ResumeThread |
스레드의 일시 중단 횟수를 줄입니다. |
CWinThread::Run |
메시지 펌프를 사용하여 스레드에 대한 함수 제어 기본 메시지 루프를 사용자 지정하려면 재정의합니다. |
CWinThread::SetThreadPriority |
현재 스레드의 우선 순위를 설정합니다. |
CWinThread::SuspendThread |
스레드의 일시 중단 횟수를 증분합니다. |
Public 연산자
속성 | 설명 |
---|---|
CWinThread::operator HANDLE |
개체의 핸들을 검색 CWinThread 합니다. |
공용 데이터 멤버
속성 | 설명 |
---|---|
CWinThread::m_bAutoDelete |
스레드 종료 시 개체를 삭제할지 여부를 지정합니다. |
CWinThread::m_hThread |
현재 스레드에 대한 핸들입니다. |
CWinThread::m_nThreadID |
현재 스레드의 ID입니다. |
CWinThread::m_pActiveWnd |
OLE 서버가 현재 위치 활성 상태인 경우 컨테이너 애플리케이션의 주 창에 대한 포인터입니다. |
CWinThread::m_pMainWnd |
애플리케이션의 주 창에 대한 포인터를 보유합니다. |
설명
실행의 주 스레드는 일반적으로 파생 된 CWinApp
CWinApp
개체에 의해 제공 ; 에서 CWinThread
파생 됩니다. 추가 CWinThread
개체는 지정된 애플리케이션 내에서 여러 스레드를 허용합니다.
지원되는 두 가지 일반적인 유형의 스레드 CWinThread
는 작업자 스레드와 사용자 인터페이스 스레드입니다. 작업자 스레드에는 메시지 펌프가 없습니다. 예를 들어 스프레드시트 애플리케이션에서 백그라운드 계산을 수행하는 스레드입니다. 사용자 인터페이스 스레드에는 시스템에서 받은 메시지 펌프 및 프로세스 메시지가 있습니다. CWinApp
및 파생된 클래스는 사용자 인터페이스 스레드의 예입니다. 다른 사용자 인터페이스 스레드는 .에서 CWinThread
직접 파생될 수도 있습니다.
클래스의 CWinThread
개체는 일반적으로 스레드 기간 동안 존재합니다. 이 동작을 수정하려면 .로 설정합니다 m_bAutoDelete
FALSE
.
클래스는 CWinThread
코드와 MFC를 스레드로부터 완전히 안전하게 만드는 데 필요합니다. 스레드 관련 정보를 유지하기 위해 프레임워크에서 사용하는 스레드 로컬 데이터는 개체에 의해 CWinThread
관리됩니다. 스레드 로컬 데이터 처리에 대한 CWinThread
이러한 의존성 때문에 MFC를 사용하는 모든 스레드는 MFC에서 만들어야 합니다. 예를 들어 런타임 함수 _beginthread
에서 만든 스레드는 _beginthreadex
MFC API를 사용할 수 없습니다.
스레드를 만들려면 .를 호출합니다 AfxBeginThread
. 작업자 또는 사용자 인터페이스 스레드를 원하는지에 따라 두 가지 양식이 있습니다. 사용자 인터페이스 스레드를 원하는 경우 파생 클래스의 CRuntimeClass
포인터로 전달 AfxBeginThread
합니다CWinThread
. 작업자 스레드를 만들려면 제어 함수에 AfxBeginThread
대한 포인터와 제어 함수에 매개 변수를 전달합니다. 작업자 스레드와 사용자 인터페이스 스레드의 경우 우선 순위, 스택 크기, 생성 플래그 및 보안 특성을 수정하는 선택적 매개 변수를 지정할 수 있습니다. AfxBeginThread
는 새 CWinThread
개체에 대한 포인터를 반환합니다.
호출 AfxBeginThread
하는 대신 파생 개체를 생성한 CWinThread
다음 CreateThread
호출할 수 있습니다. 이 2단계 생성 방법은 스레드 실행의 연속 생성과 종료 사이에 개체를 다시 사용 CWinThread
하려는 경우에 유용합니다.
자세한 CWinThread
내용은 C++ 및 MFC를 사용한 다중 스레딩, 다중 스레딩: 사용자 인터페이스 스레드 만들기, 다중 스레딩: 작업자 스레드 만들기 및 다중 스레딩: 동기화 클래스 사용 방법 문서를 참조하세요.
상속 계층 구조
CWinThread
요구 사항
머리글: afxwin.h
CWinThread::CreateThread
호출 프로세스의 주소 공간 내에서 실행할 스레드를 만듭니다.
BOOL CreateThread(
DWORD dwCreateFlags = 0,
UINT nStackSize = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
매개 변수
dwCreateFlags
스레드 생성을 제어하는 추가 플래그를 지정합니다. 이 플래그는 다음 두 값 중 하나를 포함할 수 있습니다.
CREATE_SUSPENDED
일시 중단 횟수 1로 스레드를 시작합니다. 스레드가 실행되기 전에 개체의CWinThread
멤버 데이터(예:m_bAutoDelete
파생 클래스의 멤버)를 초기화하려는 경우에 사용합니다CREATE_SUSPENDED
. 초기화가 완료되면 이 스레드를CWinThread::ResumeThread
사용하여 실행 중인 스레드를 시작합니다. 스레드는 호출될 때까지CWinThread::ResumeThread
실행되지 않습니다.0 만든 직후 스레드를 시작합니다.
nStackSize
새 스레드에 대한 스택의 크기(바이트)를 지정합니다. 0이면 스택 크기는 기본적으로 프로세스의 기본 스레드와 동일한 크기로 설정됩니다.
lpSecurityAttrs
스레드의 SECURITY_ATTRIBUTES
보안 특성을 지정하는 구조를 가리킵니다.
Return Value
스레드가 성공적으로 만들어지면 0이 아닌 경우 그렇지 않으면 0입니다.
설명
스레드 개체를 만들고 한 단계에서 실행하는 데 사용합니다 AfxBeginThread
. 스레드 실행의 연속 생성과 종료 사이에 스레드 개체를 다시 사용하려는 경우 사용합니다 CreateThread
.
CWinThread::CWinThread
CWinThread
개체를 생성합니다.
CWinThread();
설명
스레드의 실행을 시작하려면 멤버 함수를 호출합니다 CreateThread
. 일반적으로 이 생성자를 호출하고 CreateThread
호출하는 스레드를 호출AfxBeginThread
하여 만듭니다.
CWinThread::ExitInstance
드물게 재정의된 Run
멤버 함수 내에서 프레임워크에서 호출되어 스레드의 이 인스턴스를 종료하거나 호출이 실패할 InitInstance
경우 호출됩니다.
virtual int ExitInstance();
Return Value
스레드의 종료 코드입니다. 0은 오류가 없음을 나타내고 0보다 큰 값은 오류를 나타냅니다. 이 값은 호출 GetExitCodeThread
하여 검색할 수 있습니다.
설명
멤버 함수를 제외한 어디에서나 이 멤버 함수를 Run
호출하지 마세요. 이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.
이 함수의 기본 구현은 개체(있는 경우 m_bAutoDelete
TRUE
)를 CWinThread
삭제합니다. 스레드가 종료되면 추가 정리를 수행하려는 경우 이 함수를 재정의합니다. 구현은 ExitInstance
코드가 실행된 후 기본 클래스의 버전을 호출해야 합니다.
CWinThread::GetMainWnd
애플리케이션이 OLE 서버인 경우 애플리케이션 개체의 멤버를 직접 참조하는 대신 이 함수를 호출하여 애플리케이션의 활성 주 창에 대한 포인터를 m_pMainWnd
검색합니다.
virtual CWnd* GetMainWnd();
Return Value
이 함수는 두 가지 유형의 창 중 하나에 대한 포인터를 반환합니다. 스레드가 OLE 서버의 일부이고 현재 컨테이너 내에서 활성 상태인 개체가 있는 경우 이 함수는 개체의 데이터 멤버를 CWinThread
반환 CWinApp::m_pActiveWnd
합니다.
컨테이너 내에서 활성 상태인 개체가 없거나 애플리케이션이 OLE 서버가 아닌 경우 이 함수는 스레드 개체의 데이터 멤버를 반환 m_pMainWnd
합니다.
설명
사용자 인터페이스 스레드의 경우 애플리케이션 개체의 멤버를 직접 참조하는 m_pActiveWnd
것과 같습니다.
애플리케이션이 OLE 서버가 아닌 경우 이 함수의 호출은 애플리케이션 개체의 m_pMainWnd
멤버를 직접 참조하는 것과 동일합니다.
기본 동작을 수정하려면 이 함수를 재정의합니다.
CWinThread::GetThreadPriority
이 스레드의 현재 스레드 우선 순위 수준을 가져옵니다.
int GetThreadPriority();
Return Value
우선 순위 클래스 내의 현재 스레드 우선 순위 수준입니다. 반환되는 값은 가장 높은 우선 순위에서 가장 낮은 값으로 나열된 다음 중 하나입니다.
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_IDLE
이러한 우선 순위에 대한 자세한 내용은 Windows SDK를 참조 SetThreadPriority
하세요.
CWinThread::InitInstance
InitInstance
사용자 인터페이스 스레드의 각 새 인스턴스를 초기화하려면 재정의해야 합니다.
virtual BOOL InitInstance();
Return Value
초기화에 성공하면 0이 아닌 값입니다. 그렇지 않으면 0입니다.
설명
일반적으로 스레드를 처음 만들 때 완료해야 하는 작업을 수행하도록 재정 InitInstance
의합니다.
이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다. 에 전달된 제어 함수에서 작업자 스레드의 초기화를 수행합니다 AfxBeginThread
.
CWinThread::IsIdleMessage
특정 메시지가 생성된 후 호출되지 않도록 OnIdle
이 함수를 재정의합니다.
virtual BOOL IsIdleMessage(MSG* pMsg);
매개 변수
pMsg
처리 중인 현재 메시지를 가리킵니다.
Return Value
메시지를 처리한 후 호출해야 하는 경우 0이 아니고 OnIdle
, 그렇지 않으면 0입니다.
설명
기본 구현은 캐럿을 깜박임으로써 생성된 중복 마우스 메시지 및 메시지 후에 호출 OnIdle
되지 않습니다.
애플리케이션에서 짧은 타이머 OnIdle
를 만든 경우 자주 호출되어 성능 문제가 발생합니다. 이러한 애플리케이션의 성능을 향상시키려면 다음과 같이 메시지를 확인 WM_TIMER
하도록 애플리케이션의 파생 클래스를 재정 IsIdleMessage
의CWinApp
합니다.
BOOL CMyWinApp::IsIdleMessage(MSG* pMsg)
{
if (!CWinApp::IsIdleMessage(pMsg) || pMsg->message == WM_TIMER)
return FALSE;
else
return TRUE;
}
WM_TIMER
이러한 방식으로 처리하면 짧은 타이머를 사용하는 애플리케이션의 성능이 향상됩니다.
CWinThread::m_bAutoDelete
스레드 종료 시 CWinThread
개체를 자동으로 삭제할지 여부를 지정합니다.
BOOL m_bAutoDelete;
설명
m_bAutoDelete
데이터 멤버는 BOOL 형식의 공용 변수입니다.
값 m_bAutoDelete
은 기본 스레드 핸들이 닫히는 방식에는 영향을 주지 않지만 핸들을 닫는 타이밍에 영향을 미칩니다. 스레드 핸들은 항상 CWinThread
개체가 제거될 때 닫힙니다.
CWinThread::m_hThread
이 CWinThread
에 연결된 스레드에 대한 핸들입니다.
HANDLE m_hThread;
설명
데이터 멤버는 m_hThread
형식 HANDLE
의 공용 변수입니다. 기본 커널 스레드 개체가 현재 있고 핸들이 아직 닫혀 있지 않은 경우에만 유효합니다.
CWinThread
소멸자가 .를 호출 CloseHandle
합니다m_hThread
. m_bAutoDelete
스레드가 종료되면 TRUE
개체가 CWinThread
소멸되어 개체 및 해당 멤버 변수에 CWinThread
대한 포인터가 무효화됩니다. 스레드 종료 값을 확인하거나 신호를 기다리는 멤버가 필요할 m_hThread
수 있습니다. 스레드 실행 CWinThread
중 및 종료 후 개체와 해당 멤버를 m_hThread
유지하려면 스레드 실행을 계속하기 FALSE
전에 설정 m_bAutoDelete
하세요. 그렇지 않으면 스레드를 종료하고 개체를 삭제한 다음 CWinThread
핸들을 닫은 후 사용하려고 할 수 있습니다. 이 기술을 사용하는 경우 개체를 삭제해야 합니다 CWinThread
.
CWinThread::m_nThreadID
이 CWinThread
에 연결된 스레드의 ID입니다.
DWORD m_nThreadID;
설명
데이터 멤버는 m_nThreadID
형식 DWORD
의 공용 변수입니다. 기본 커널 스레드 개체가 현재 존재하는 경우에만 유효합니다.
또한 수명에 대한 m_hThread
발언을 참조하세요.
예시
AfxGetThread
에 대한 예를 참조하세요.
CWinThread::m_pActiveWnd
이 데이터 멤버를 사용하여 스레드의 활성 창 개체에 대한 포인터를 저장합니다.
CWnd* m_pActiveWnd;
설명
Microsoft Foundation 클래스 라이브러리는 참조하는 창이 닫히면 스레드를 m_pActiveWnd
자동으로 종료합니다. 이 스레드가 애플리케이션의 기본 스레드인 경우 애플리케이션도 종료됩니다. 이 데이터 멤버인 NULL
경우 애플리케이션 개체의 CWinApp
활성 창이 상속됩니다. m_pActiveWnd
는 형식 CWnd*
의 public 변수입니다.
일반적으로 재정의할 때 InitInstance
이 멤버 변수를 설정합니다. 작업자 스레드에서 이 데이터 멤버의 값은 부모 스레드에서 상속됩니다.
CWinThread::m_pMainWnd
이 데이터 멤버를 사용하여 스레드의 주 창 개체에 대한 포인터를 저장합니다.
CWnd* m_pMainWnd;
설명
Microsoft Foundation 클래스 라이브러리는 참조하는 창이 닫히면 스레드를 m_pMainWnd
자동으로 종료합니다. 이 스레드가 애플리케이션의 기본 스레드인 경우 애플리케이션도 종료됩니다. 이 데이터 멤버인 NULL
경우 애플리케이션 개체의 CWinApp
주 창을 사용하여 스레드를 종료할 시기를 결정합니다. m_pMainWnd
는 형식 CWnd*
의 public 변수입니다.
일반적으로 재정의할 때 InitInstance
이 멤버 변수를 설정합니다. 작업자 스레드에서 이 데이터 멤버의 값은 부모 스레드에서 상속됩니다.
CWinThread::OnIdle
유휴 시간 처리를 수행하려면 이 멤버 함수를 재정의합니다.
virtual BOOL OnIdle(LONG lCount);
매개 변수
lCount
스레드의 메시지 큐가 비어 있을 때 매번 OnIdle
증분된 카운터가 호출됩니다. 이 수는 새 메시지가 처리될 때마다 0으로 다시 설정됩니다. 매개 변수를 lCount
사용하여 메시지를 처리하지 않고 스레드가 유휴 상태인 상대적인 시간을 확인할 수 있습니다.
Return Value
0이 아닌 경우 더 많은 유휴 처리 시간을 받습니다. 유휴 처리 시간이 더 이상 필요하지 않은 경우 0입니다.
설명
OnIdle
는 스레드의 메시지 큐가 비어 있을 때 기본 메시지 루프에서 호출됩니다. 재정의를 사용하여 고유한 백그라운드 유휴 처리기 작업을 호출합니다.
OnIdle
는 추가 유휴 처리 시간이 필요하지 않음을 나타내려면 0을 반환해야 합니다. lCount
매개 변수는 메시지 큐가 비어 있을 때 호출될 때마다 OnIdle
증가하며 새 메시지가 처리될 때마다 0으로 다시 설정됩니다. 이 수에 따라 다른 유휴 루틴을 호출할 수 있습니다.
이 멤버 함수의 기본 구현은 메모리에서 임시 개체 및 사용되지 않는 동적 링크 라이브러리를 해제합니다.
이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.
애플리케이션은 반환될 때까지 OnIdle
메시지를 처리할 수 없으므로 이 함수에서 긴 작업을 수행하지 않습니다.
CWinThread::operator HANDLE
개체의 핸들을 검색 CWinThread
합니다.
operator HANDLE() const;
Return Value
성공하면 스레드 개체의 핸들입니다. 그렇지 않으면 . NULL
설명
핸들을 사용하여 Windows API를 직접 호출합니다.
CWinThread::PostThreadMessage
사용자 정의 메시지를 다른 CWinThread
개체에 게시하기 위해 호출됩니다.
BOOL PostThreadMessage(
UINT message,
WPARAM wParam,
LPARAM lParam);
매개 변수
message
사용자 정의 메시지의 ID입니다.
wParam
첫 번째 메시지 매개 변수입니다.
lParam
두 번째 메시지 매개 변수입니다.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다.
설명
게시된 메시지는 메시지 맵 매크로 ON_THREAD_MESSAGE
에 의해 적절한 메시지 처리기에 매핑됩니다.
참고 항목
호출 PostThreadMessage
하면 메시지가 스레드의 메시지 큐에 배치됩니다. 그러나 이러한 방식으로 게시된 메시지는 창과 연결되지 않으므로 MFC는 메시지 또는 명령 처리기에 메시지를 디스패치하지 않습니다. 이러한 메시지를 처리하려면 파생 클래스의 함수를 PreTranslateMessage()
재정의 CWinApp
하고 메시지를 수동으로 처리합니다.
CWinThread::PreTranslateMessage
Windows 함수에 디스패치되기 전에 창 메시지를 필터링하도록 이 함수를 재정의합니다DispatchMessage
.TranslateMessage
virtual BOOL PreTranslateMessage(MSG* pMsg);
매개 변수
pMsg
처리할 MSG
메시지를 포함하는 구조를 가리킵니다.
Return Value
메시지가 완전히 처리되고 PreTranslateMessage
더 이상 처리되지 않아야 하는 경우 0이 아닙니다. 메시지를 정상적인 방식으로 처리해야 하는 경우 0입니다.
설명
이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.
CWinThread::ProcessMessageFilter
프레임워크의 후크 함수는 이 멤버 함수를 호출하여 특정 Windows 메시지를 필터링하고 응답합니다.
virtual BOOL ProcessMessageFilter(
int code,
LPMSG lpMsg);
매개 변수
code
후크 코드를 지정합니다. 이 멤버 함수는 코드를 사용하여 처리하는 lpMsg
방법을 결정합니다.
lpMsg
Windows MSG
구조체에 대한 포인터입니다.
Return Value
메시지가 처리되는 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
후크 함수는 애플리케이션의 일반 메시지 처리로 전송되기 전에 이벤트를 처리합니다.
이 고급 기능을 재정의하는 경우 기본 클래스 버전을 호출하여 프레임워크의 후크 처리를 유지 관리해야 합니다.
CWinThread::ProcessWndProcException
프레임워크는 처리기가 스레드의 메시지 또는 명령 처리기 중 하나에서 throw된 예외를 catch하지 않을 때마다 이 멤버 함수를 호출합니다.
virtual LRESULT ProcessWndProcException(
CException* e,
const MSG* pMsg);
매개 변수
e
처리되지 않은 예외를 가리킵니다.
pMsg
프레임워크에서 예외를 MSG
발생시킨 Windows 메시지에 대한 정보가 포함된 구조를 가리킵니다.
Return Value
예외가 WM_CREATE
생성되면 -1이고, 그렇지 않으면 0입니다.
설명
이 멤버 함수를 직접 호출하지 마세요.
이 멤버 함수의 기본 구현은 다음 메시지에서 생성된 예외만 처리합니다.
명령 | 작업 |
---|---|
WM_CREATE |
실패하다. |
WM_PAINT |
영향을 받는 창의 유효성을 검사하여 다른 WM_PAINT 메시지가 생성되지 않도록 합니다. |
예외의 전역 처리를 제공하도록 이 멤버 함수를 재정의합니다. 기본 동작을 표시하려는 경우에만 기본 기능을 호출합니다.
이 멤버 함수는 메시지 펌프가 있는 스레드에서만 사용됩니다.
CWinThread::PumpMessage
스레드의 메시지 루프를 포함합니다.
virtual BOOL PumpMessage();
설명
PumpMessage
에는 스레드의 메시지 루프가 포함되어 있습니다. PumpMessage
는 스레드의 메시지를 펌핑하기 위해 호출 CWinThread
됩니다. 직접 호출 PumpMessage
하여 메시지를 강제로 처리하거나 재정의하여 기본 동작을 변경할 수 있습니다 PumpMessage
.
직접 호출 PumpMessage
하고 기본 동작을 재정의하는 것은 고급 사용자에게만 권장됩니다.
CWinThread::ResumeThread
멤버 함수에 의해 일시 중단된 스레드 또는 플래그를 사용하여 만든 CREATE_SUSPENDED
스레드의 SuspendThread
실행을 다시 시작하기 위해 호출됩니다.
DWORD ResumeThread();
Return Value
성공하면 스레드의 이전 일시 중단 횟수입니다. 0xFFFFFFFF
그렇지 않으면. 반환 값이 0이면 현재 스레드가 일시 중단되지 않았습니다. 반환 값이 1이면 스레드가 일시 중단되었지만 이제 다시 시작됩니다. 1보다 큰 반환 값은 스레드가 일시 중단된 상태로 유지됨을 의미합니다.
설명
현재 스레드의 일시 중단 수가 1씩 줄어듭니다. 일시 중단 횟수가 0으로 줄면 스레드는 실행을 다시 시작합니다. 그렇지 않으면 스레드가 일시 중단된 상태로 유지됩니다.
CWinThread::Run
사용자 인터페이스 스레드에 대한 기본 메시지 루프를 제공합니다.
virtual int Run();
Return Value
int
스레드에서 반환되는 값입니다. 이 값은 호출 GetExitCodeThread
하여 검색할 수 있습니다.
설명
Run
는 애플리케이션이 메시지를 받을 때까지 Windows 메시지를 획득하고 디스패치합니다 WM_QUIT
. 스레드의 메시지 큐에 현재 메시지가 Run
없는 경우 유휴 시간 처리를 수행하도록 호출 OnIdle
합니다. 들어오는 메시지는 특수 처리를 위해 PreTranslateMessage
멤버 함수로 이동한 다음 표준 키보드 번역을 위한 Windows 함수 TranslateMessage
로 이동합니다. 마지막으로 Windows 함수가 DispatchMessage
호출됩니다.
Run
는 거의 재정의되지 않지만 특수 동작을 구현하도록 재정의할 수 있습니다.
이 멤버 함수는 사용자 인터페이스 스레드에서만 사용됩니다.
CWinThread::SetThreadPriority
이 함수는 우선 순위 클래스 내에서 현재 스레드의 우선 순위 수준을 설정합니다.
BOOL SetThreadPriority(int nPriority);
매개 변수
nPriority
우선 순위 클래스 내에서 새 스레드 우선 순위 수준을 지정합니다. 이 매개 변수는 가장 높은 우선 순위에서 가장 낮은 값으로 나열된 다음 값 중 하나여야 합니다.
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_IDLE
이러한 우선 순위에 대한 자세한 내용은 Windows SDK를 참조 SetThreadPriority
하세요.
Return Value
함수가 성공한 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
성공적으로 반환된 후에 CreateThread
만 호출할 수 있습니다.
CWinThread::SuspendThread
현재 스레드의 일시 중단 횟수를 증분합니다.
DWORD SuspendThread();
Return Value
성공하면 스레드의 이전 일시 중단 횟수입니다. 0xFFFFFFFF
그렇지 않으면.
설명
스레드의 일시 중단 수가 0보다 큰 경우 해당 스레드는 실행되지 않습니다. 멤버 함수를 호출하여 스레드를 다시 시작합니다 ResumeThread
.