VC++로 새 루틴 만들기
VC++
:
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
위의 두 함수는 우리가 항상 첫 번째 함수를 사용한다.여기서 (1) pfnThreadProc는 새 스레드로 시작할 함수(글로벌 함수를 미리 정의해야 함)를 나타내며 이 함수는 다음 형식이어야 합니다.
UINT My Controlling Function(LPVOID pParam) {//이것은 cpu의 사용률이 높은 프로그램을 추가할 수도 있고, 사순환 프로그램일 수도 있습니다.//창이 있는 작업 목록에 이 라인 이름이 나타납니다. 창 이름입니다.return 0;}
(2) pParam은 다음과 같이 새 스레드에 지정된 창 핸들을 나타냅니다.
AfxGetMainWnd()->m_hWnd
(3) nPriority는 이 스레드의 우선 순위를 나타냅니다.
THREAD_PRIORITY_ABOVE_NORMAL은 정상적인 우선순위보다 조금 높다.THREAD_PRIORITY_BELOW_NORMAL은 정상적인 우선순위보다 조금 낮다.THREAD_PRIORITY_HIGHEST는 정상적인 우선순위보다 두 가지 높습니다.THREAD_PRIORITY_IDLE에서 우선 순위 기준 1을 설정합니다.THREAD_PRIORITY_LOWEST는 일반 우선 순위보다 두 점 낮습니다.THREAD_PRIORITY_TIME_CRITICAL 설정 우선순위 기수는 15입니다.0 우선 순위를 정상으로 설정합니다.뒤에 많은 매개 변수가 0일 수도 있고 생략할 수도 있다.
★ 이 예제에서는 다음과 같은 코드로 스레드를 생성합니다.
UINT Proc1(LPVOID param)//첫 번째 매개변수에 필요한 형식으로 함수를 생성합니다.{int i; for (i=0; i=1000; i++)//i=1000 때문에 이 프로그램은 순환하지 않습니다. {: MessageBeep (0);return 0; } void CMy111Dlg::Oncancel()//함수의 새 스레드를 다른 버튼에 생성합니다.{HWND hWnd=GetSafeHwnd();//함수에 사용할 현재 창의 핸들을 가져옵니다.AfxBeginThread(Proc1,hWnd,0);//정상 우선순위로 호출됩니다.//Proc1(AfxGetMainWnd()->m hWnd);
상례에서 알 수 있듯이, 이런 방법으로 이 프로그램을 실행하면 메인 창이 움직일 수 있지만, 상례를 바꾸면
Proc1(AfxGetMainWnd()->m_hWnd)//프로그램은 실행할 수 있지만 주 창은 이동할 수 없습니다.
이 코드는 7CTT에 속하며 디버깅이 통과되었습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VB에서 VC로 작성된 DLL을 호출하는 방법 공유이 두 가지가 있으면 VC를 사용하는 수조처럼 처리할 수 있습니다.도면을 내보내는 경우 WMF 또는 BMP 형식을 생성하여 VB를 호출할 수 있습니다.그러나 나는 VB가 창의 핸들 hWnd와 hDC, 그리고 창의 그...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.