VC++에서 프로그램 사이에 데이터를 전달하는 방법은 몇 가지가 있다. 그 중에서 WM_COPYDATA 메세지를 이용하여 데이터를 전달하는 방법은 다음과 같다.
1. 전송 프로그램
// 전송 데이터 선언
struct stBuf
{
int n;
char c[256];
};
// 윈도우 찾기
m_Window=::FindWindow(NULL, "RxWindow"); // "Rx Window"는 수신측 윈도우의 이름
if(::IsWindow(m_Window)) MessageBox("Window Found");
// 메세지 전송
COPYDATASTRUCT copyData;
stBuf buf;
buf.c[0] = 'A';
buf.c[1] = 'B';
buf.c[2] = 'C';
buf.n = 3;
copyData.dwData=1;
copyData.cbData=sizeof(buf);
copyData.lpData=(LPVOID)&buf;
::SendMessage(this->m_Window, WM_COPYDATA, (WPARAM)this->GetSafeHwnd(), (LPARAM)©Data);
2. 수신 프로그램
// 수신 데이터 선언 (전송 데이터와 동일)
struct stBuf
{
int n;
char c[256];
};
// WM_COPYDATA 메세지 처리 함수
// WM_COPYDATA 메세지는 윈도우에서 기본으로 제공한다.
BOOL RxWindow::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
stBuf *buf = (stBuf*)(pCopyDataStruct->lpData);
// buf.n 과 buf.c[0~2]을 읽는다.
return CDialog::OnCopyData(pWnd, pcopyData);
}
'컴퓨터공학 > C,C++,C#' 카테고리의 다른 글
VC++에서 SetDIBitsToDevice와 StretchDIBits에서 이미지가 깨지는 이유 (0) | 2018.03.25 |
---|---|
C++ 클래스를 복사하는 방법 (0) | 2018.03.23 |
[C#] textBox의 커서 위치 구하기 (0) | 2018.03.09 |
C#에서 char와 byte의 차이 (0) | 2018.03.09 |
Visual Studio에서 탭 사용하기 (0) | 2018.03.08 |
댓글