원본 : http://www.debuglab.com/knowledge/wm_copydata.html
1.요약
서로다른 윈도우끼리(다른 프로세스에도 적용됨) 데이터를 주고 받고자 할때 윈도우에서 제공하는 WM_COPYDATA를 사용해 보기로 한다.
2.본문
하나의 윈도우에는 윈도우가 관리하는 논리적 주소공간이 있다. 이러한 이유때문에 하나의 윈도우에서 다른 윈도우로 포인터를 넘겨주고자 한다면 그리 쉬운방법이 아님을 알 수 있다. 하지만, WM_COPYDATA를 사용하면 논리적 주소공간에 상관없이 다른 윈도우로 한쪽의 논리적 주소를 넘길 수 있다. 예제를 살펴보기로 하자.
3.예제
4.참고
MSJ 1996년 1월호 C/C++ Q&A
- 2001.08.06 Smile Seo -
1.요약
서로다른 윈도우끼리(다른 프로세스에도 적용됨) 데이터를 주고 받고자 할때 윈도우에서 제공하는 WM_COPYDATA를 사용해 보기로 한다.
2.본문
하나의 윈도우에는 윈도우가 관리하는 논리적 주소공간이 있다. 이러한 이유때문에 하나의 윈도우에서 다른 윈도우로 포인터를 넘겨주고자 한다면 그리 쉬운방법이 아님을 알 수 있다. 하지만, WM_COPYDATA를 사용하면 논리적 주소공간에 상관없이 다른 윈도우로 한쪽의 논리적 주소를 넘길 수 있다. 예제를 살펴보기로 하자.
3.예제
// source window에서..
void CSourceWnd::Write(const void* lpBuf, UINT nCount)
{
CWnd *pTraceWnd = CWnd::FindWindow(TRACEWND_CLASSNAME, NULL);
if (pTraceWnd) {
COPYDATASTRUCT cds;
cds.dwData = ID_COPYDATA_TRACEMSG /* Flag 용도 */;
cds.cbData = nCount;
cds.lpData = (void*)lpBuf;
pTraceWnd->SendMessage(WM_COPYDATA,
(WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(),
(LPARAM)&cds);
} else {
AfxMessageBox("윈도우를 찾을 수 없습니다.");
}
}
----------------------------------------------------------
//////////////////////////////////////////////////////
// target windows에서..
// 메세지 핸들링 설치
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_MESSAGE(WM_COPYDATA, OnTraceMsg)
.
.
.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
LRESULT CMainFrame::OnTraceMsg(WPARAM wParam, LPARAM lParam)
{
COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
// pcds 를 사용한다..
return 0;
}
4.참고
MSJ 1996년 1월호 C/C++ Q&A
- 2001.08.06 Smile Seo -
"MFC" 카테고리의 다른 글
- 256색 이상의 Bitmap ImageList 만들기 (0)2007/02/21
- 사용하지 않는 인자에 대한 warning 없애기 (0)2007/02/21
- WM_COPYDATA 를 사용한 메세지 전송 (0)2007/02/21
- ATOM을 이용한 프로세스간 데이터 공유 (0)2007/02/21
- ToolBar에서 256이상의 Color사용 (0)2007/02/21
Tags WM_COPYDATA

수안이의 컴퓨터 연구실



Leave your greetings.