336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
ATL 프로젝트에서 hWnd사용하기
문제 상황 :
ATL 프로젝트에서
소켓 통신을 위한 쓰레드를 만들어 사용하다
소켓 통신 도중 특정 메시지 수신시
ATL 이벤트를 발생 시키고 싶었다.
------요약-----------
Worker Thread 에서 ATL event(Fire_xxxx) 실행
직접 Fire 함수를 실행시 Invoke 부분에서
E_UNEXPECTED Catastrophic failure. 를 리턴한다.
Worker Thread 에서 ATl main Thread 의 함수를 실행하여 그런것 같다.
SendMessage 나 PostMessage 로 Main Thread 가 실행하도록 메시지를 주는 방법을 찾던 도중
SendMessage가 hWnd 를 이용하여 타 쓰레드간 메시지를 주고 받을수 있다는 점을 활용하였다.
하지만 기본 ATL 객체는 hWnd 를 갖고 있지 않다.
생성자 호출 시
상속 받은 m_bWindowOnly 변수를 TRUE 로 초기화하면
m_bWindowOnly = TRUE;
상속 받은 m_hWndCD 를 사용 할 수 있다.
m_hWndCD를 활용하여 WorkerThread 에서
메인 쓰레드로 메세지를 준다.
::SendMessage(pHelloCtrl->m_hWndCD, WM_xxx, (WPARAM)NULL, (LPARAM)NULL);
'Programming > COM,ATL' 카테고리의 다른 글
MFC 프로젝트에서 ATL 연동하기 (2) | 2016.03.29 |
---|---|
ATL/COM 강좌 (0) | 2016.03.25 |
ATL 프로젝트에서 hWnd사용하기 #2 (0) | 2016.03.25 |
ATL 프로젝트로 만든 DLL 을 MFC 프로젝트에서 사용하기 (0) | 2016.03.25 |
ocx, dll 라이브러리 등록 (0) | 2016.03.15 |