친구가 저에게 정말로 며칠 동안 직면하고있는 문제에 대해 큰 고뇌를 안겨주고 있습니다 ... 간단합니다 ... 변수 CString 테스트가있는 경우 예를 들어 둘 이상의 대화 상자 사이에서 통신하고 싶습니다. .이 테스트 변수를 대화 상자/클래스 (각 대화 상자가 별도의 클래스를 가짐을 고려하여)로 사용하기를 원합니다 ... 많은 방법을 시도했지만 모든 것이 실패했습니다 ..이 WM_COPYDATA 메서드를 사용해 보았습니다 ... 지금도 무엇을 달성하지 못하고 있습니까? 내가하고 싶었던 ...WM_COPYDATA 통해 두 대화 상자 간의 통신 문제가 있습니까?
는Sender Class:
#define ORGININFO 1
typedef struct ShareMessage
{
CString mydata;
int myValue;
}MYDATA;
void CCopyDataDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
MYDATA myData;
COPYDATASTRUCT cData;
myData.mydata.SetString(L"Rakesh");
cData.dwData = ORGININFO;
cData.cbData = sizeof(myData);
cData.lpData = &myData;
HWND hwnd = (HWND)FindWindow(L"Dialog1",L"Test");
SendMessageA(m_hWnd,WM_COPYDATA,(WPARAM)hwnd,(LPARAM)(LPVOID)&myData);
Dialog1 dlg;
dlg.DoModal();
}
수신기 클래스 : 나는 잘 모릅니다 위의
#define iMessage 1
typedef struct MyDatas
{
CString myData;
int myint;
}DATA;
PCOPYDATASTRUCT pData;
LRESULT Dialog1::WindowProc(UINT message,WPARAM wParam,LPARAM lparam)
{
if(WM_COPYDATA != NULL)
pData = (PCOPYDATASTRUCT)lparam;
switch(pData->dwData)
{
case iMessage:
MessageBoxA((HWND)AfxGetInstanceHandle(),(LPCSTR)(LPCTSTR)((DATA*)(pData->lpData))->myData,(LPCSTR)L"Test",MB_OK);
}
return 0;
}
는 실수는 무엇인지 내가 뭐하는 거지하지만이 CCopyDialog 클래스에서 데이터를 수신하지 ...
thnx를 진행하고 있습니다 ur 도움을 주셔서 감사합니다. 난 .. 그게 여전히 .. 스위치 (pData -> dwData) 여전히 0.do U는 anythere 메서드를 알고 동일 ... – kiddo
당신은 SendMessage 호출에 오류가 통지하지 않았다 . 나는 이것을 보여주기 위해 나의 답장을 편집했다. –
아니 밥, 여전히 그 같은 오류 ... 윈도우 핸들이나 메시지 수신에 문제가있는 것을 발견합니까? 왜냐하면 Dialog1 클래스의 pData-> dwData는 여전히 0 이상입니다. 메시지 보내기 hwnd (즉, HWND hwnd = FindWindow (L "Dialog1", L "Test"))는 NULL을 말합니다 ... 괜찮을 것입니다 .. – kiddo