winapi PostThreadMessage PeekMessage

DWORD thpostid;
DWORD thpeekid;


#define MSG_PEEK WM_USER+20


ULONG WINAPI testpost(LPVOID lparam)
{
unsigned long lasttime;


char *aa = (char *)malloc(8);
memcpy(aa, "asdf", 5);
PostThreadMessage(thpeekid, MSG_PEEK, 0, (long)aa);
PostThreadMessage(thpeekid, MSG_PEEK+1, 0, (long)aa);


return 0;
}


void CTestMsgQueueDlg::OnButtonPostmsg() 
{
HANDLE hth;
hth = CreateThread(0, 0, testpost, 0, 0, &thpostid);
}


ULONG WINAPI testpeek(LPVOID lparam)
{
MSG msg;
char *bb;
PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE);


while (1)
{
if (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE))
{
switch (msg.message)
{
case MSG_PEEK:
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
switch (msg.message)
{
case MSG_PEEK:
bb = (char *)msg.lParam;
free(bb);
TRACE("\ni remove now"); // 打印一次
break;
}
}
case MSG_PEEK+1:
TRACE("\n i am still here"); // 会一直打印
Sleep(3000);
break;
default:
TRACE("\n i got something irelevant");
}
}
}

return 0;
}


void CTestMsgQueueDlg::OnButtonPeekmsg() 
{
HANDLE hth;
hth = CreateThread(0, 0, testpeek, 0, 0, &thpeekid);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值