다이얼 로그에서
특정 버튼을 클릭하면
별도의 쓰레드를 생성하여 별도의 로직을 수행하는 프로그램을 만들었는데,
위의 목적은 별도의 로직을 수행하면서
다이얼로그의 이벤트를 체크하기 위함이었습니다. ex. cancel 등
그런데, 별도 실행자체는 문제가 없었는데
쓰레드에서의 결과를 다이얼로그의 로그로 찍어줄려니까,
쓰레드의 상태를 알수 있는 방법이 없었습니다.
그러던 중에 알게 된것이
SendMessage와 OnCopyData입니다.
이 두 함수를 이용하면,
쓰레드에서 다이얼로그의 함수를 실행시킬수 있습니다.
이를 위해선 먼저,
다이얼로그 클래스에서 OncopyData를 overide시켜줘야 합니다.
먼저 헤더.
public에 OncopyData함수를 선언해주고,
그 다음 다이얼로그 cpp에서
다음과 같이 BEGIN_MESSAGE_MAP과 END_MESSAGE_MAP
사이에 ON_WM_COPYDATA()를 추가해주면 됩니다.
그리고 이제 쓰레드에서 SendMessage를 보낼때에는,
다음과 같이 COPTYDATASTRUCT를 생성하여 sendMessage를 호출하면 됩니다.
여기서 주의할점은 findWindow할 때 인자는
프로세스의 이름이 아니라 윈도우 창 이름이라는 것정도만 유의하면 됩니다.
'Programing > C와 C플플' 카테고리의 다른 글
[MFC] Modal 과 Modeless (1) | 2015.12.16 |
---|---|
[Linux c]리눅스에서 C mysql 연동하기. (0) | 2012.10.01 |
[C/C++]배열 또는 벡터에서 최대값, 최소값 찾아내기 (0) | 2011.01.06 |
[C/C++]구조체의 배열 정렬 (0) | 2011.01.06 |
[C/C++] 간단한 경마게임 만들기 (12) | 2011.01.04 |