友達は、私が数日間直面している問題について本当に頭が痛いです...簡単です...たとえば、変数CStringテストがある場合、2つ以上のダイアログボックス間で通信したい..私このテスト変数をダイアログ/クラスで共通にしたい(各ダイアログが別々のクラスを持つことを考慮して)...多くのメソッドを試しましたが、すべて失敗しました..最後に、この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 クラスからデータを受信していません...これで私を助けてください...