15,471
社区成员
发帖
与我相关
我的任务
分享
#pragma pack(1)
struct sTxtData
{
CString strDate;
CString strTime;
CString strValue;
};
#pragma pack;
定义结构体对象和COPYDATASTRUCT对象
sTxtData* pData=new sTxtData();
COPYDATASTRUCT cpdsTruct;
将每行从txt文档读来的数据赋给pData的对应变量:
pData->strDate=strToShow;
pData->strTime=strToShow;
pData->strValue=strToShow;
然后将结构体信息赋给消息准备传递的cpdsTruct
cpdsTruct.dwData=0;
cpdsTruct.cbData=sizeof(sTxtData);
cpdsTruct.lpData=(PVOID)pData;
然后发送消息WM_COPYDATA
SendMessage(GetMainWnd()->m_hWnd,WM_COPYDATA,NULL,(LPARAM)&cpdsTruct);
第二步:重载WM_COPYDATA消息
然后在BOOL ***::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
中添加:
CString mDate,mTime,mValue;
sTxtData* myRData=(sTxtData*)(pCopyDataStruct->lpData);
mDate=myRData->strDate;
mTime=myRData->strTime;
mValue=myRData->strValue;
至此,利用界面线程打开txt文件中一行数据就都传递到主线程了。
提醒:没有安装MSDN的孩纸们,赶紧安装。没有那玩意,痛苦着呢……………………
float* pTxtDate;
pTxtDate=new float[mTotalOpenNum];
//mTotalOpenNum是要读取数据的总数
.....
.....
//将数据都读取到pTxtDate后
PostMessage(GetMainWnd()->m_hWnd,WM_MYMESSAGE,(WPARAM)pTxtDate,0);
];
这样的话我能够紧跟着delete [] pTxtDate;吗?
还有在我的消息函数中:
CString str;
str.Format("%.2f",wParam);
怎么没有传过来数据呢?
请大家帮我看看,谢谢!