【发布时间】:2016-05-19 03:35:33
【问题描述】:
我正在使用CWinThread。我已经让主 GUI 向线程发送LPARAM 中的数组。例如,这段代码WORKS:
//On GUI
char *headData = "L1";
PostThreadMessage(threadID,SEND_HEAD, 0, (LPARAM)head);
关于线程:
void CMyThread::OnSendhead( WPARAM, LPARAM lParam){
char *head = (char*)lParam;
if (strcmp(head,"L1")==0){
//This line is reached.
}
return;
}
但是当我在这里做一点改变时:
char *head = "L1"
unsigned char byteHead[3];
memcpy(byteHead, head, 3);
PostThreadMessage(threadID,SEND_HEAD, 0, (LPARAM)byteHead);
关于线程:
void CMyThread::OnSendhead( WPARAM, LPARAM lParam){
unsigned char* byteHead = (unsigned char*)lParam;
char head[3];
memcpy(head, byteHead,3);
head[3] = '\0';
if (strcmp(head,"L1")==0){
//This line is nerver reached.
}
return;
}
if 里面的行没有到达。我已将线程上的代码移至 GUI 进行测试(无需转换为 LPARAM),一切正常。所以我想我不能在lParam 和unsigned char* 之间转换?为什么,我该怎么做?谢谢各位
【问题讨论】:
标签: c++ multithreading casting mfc