본문 바로가기
컴퓨터공학/C,C++,C#

[VC++] 프로그램 사이에 데이터 전송하는 방법

by 무에서 2018. 3. 20.
반응형

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)&copyData);



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);

}



반응형

댓글