로그인

검색

MoA
조회 수 8836 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
ex)
CServerManagerDlg 메인 다이얼로그
 
스레드와 관련없는 함수들은 타 클래스에서
CServerManagerDlg* lpDlg = (CServerManagerDlg*)AfxGetMainWnd();
이렇게 선언해서 가져다 썼다.
하지만,
스레드안에서는 메인다이얼로그 포인터를 얻을수 없다.
이유인 즉
AfxGetMainWnd()
안으로 들어가보면
 
_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
{
    CWinThread* pThread = AfxGetThread();
    return pTrhead != NULL ? pThread->GetMainWnd() : NULL;
}

내부에서 AfxGetThread() 함수를 사용하는 것을 볼수가 있다.
이것은 현재 스레드의 GetMainWnd() 함수를 호출한다.
이것은 다른 스레드에서 메인 윈도우의 핸들이 필요할때는 문제가 된다.
즉 다른 스레드에서 다음과 같이 AfxGetMainWnd() 함수를 호출하면 메인 윈도우의 핸들을 얻을수가 없게 된다.
해서
 
스레드에 연결된 모든 맴버 함수내에서는
CServerManagerDlg* lpDlg = (CServerManagerDlg*)AfxGetApp()->GetMainWnd();
이렇게 해주면 된다.

?

  1. Programming 게시판 관련

  2. ChartFX 7.0 MFC에서 사용하기

  3. 에디트 플러스, VS 2008 컴파일 환경 설정

  4. 정적 배열과 STL vector 속도 비교

  5. pthread

  6. HWND와 HINSTANCE

  7. 컨텍스트 스위칭 (Context Switching)

  8. __cdecl , __pascal, __stdcall

  9. fopen 함수가 Multi Thread 에서 안전한가?

  10. memset vs for 초기화. 속도 차이가 얼마나 날까?

  11. unsigned char <-> 유니코드(unicode) 및, string 변환 매크로 - USES_CONVERSION

  12. Redmine 설치

  13. MFC 클래스 멤버함수 설명서

  14. Direct3D 9 compile

  15. Data Conversions

  16. 다른 스레드에서 메인다이얼로그 포인터 받아오기 AfxGetMainWnd()

  17. 파일 입출력

  18. char*, String, CString

  19. CreateThread, ExitThread, GetExitCodeThread ...

  20. Thread와 SendMessage를 통해 DeadLock을 만드는 방법

  21. 작업자 스레드(Worker Thread) 와 사용자 인터페이스 스레드(User Interface Thread)

Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 ... 17 Next
/ 17