我在线程中运行此代码,假设receivedPosts和td->窗口有效:
std::vector<Post> *receivedPosts_n = new std::vector<Post>;
*receivedPosts_n = receivedPosts;
SendMessage(td->window, WM_TIMER, IDT_TIMER_FIND_NEW_POSTS_CALLBACK,
(LPARAM) receivedPosts_n);
我在IDT_TIMER_FIND_NEW_POSTS_CALLBACK运行此代码(hwnd是td-&gt;窗口):
case IDT_TIMER_FIND_NEW_POSTS_CALLBACK:
{
std::vector<Post> *currentPosts_ptr = (std::vector<Post> *)lParam;
//This vector turns up as undefined
std::vector<Post> currentPosts = *currentPosts_ptr;
}
break;
但问题是* currentPosts_ptr会变成无效指针,即它指向随机存储器。
指针有什么问题?
感谢。
答案 0 :(得分:0)
MSDN documentation表示对于WM_TIMER,lParam的消息值为
指向安装计时器时传递给SetTimer函数的应用程序定义的回调函数的指针。
如果您需要发送自定义消息,最好只使用专为此方案设计的WM_USER through 0x7FFF。