力挽狂澜(17709404) 14:53:32
一个线程一个消息队列。。往里面发会处理到了
流水-(64950453) 14:58:05
hLVP = CreateThread(NULL, 0, LVPThread, NULL, NULL, NULL);
这样子的线程,也可以发进去???
力挽狂澜(17709404) 14:56:56
有GetMessage DispatchMessage?
流水-(64950453) 14:58:56
BOOL PostThreadMessage(
DWORD idThread,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
这个的第一个参数是DWORD,不是HANDLE呢。
流水-(64950453) 14:58:59
有呀,
力挽狂澜(17709404) 14:57:27
ThreadID来的
流水-(64950453) 14:59:36
如何得到线程ID?
流水-(64950453) 14:59:55
如果用这个CreateThread来建立线程的话。
力挽狂澜(17709404) 14:58:44
有一个参数填入一个DWORD返回的
流水-(64950453) 15:01:22
HANDLE CreateThread(
SEC_ATTRS SecurityAttributes,
ULONG StackSize,
SEC_THREAD_START StartFunction,
PVOID ThreadParameter,
ULONG CreationFlags,
PULONG ThreadId
);
谢谢~力挽兄!!知道了.
// 本地视频部分
DWORD ThreadID = NULL;
extern "C" BOOL __stdcall EXPORT LVPart()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// 此处为普通函数体
// 本地视频主线程
HANDLE hLVPart = NULL;
hLVPart = CreateThread(NULL, 0, LVPartThread, NULL, NULL, &ThreadID);
return TRUE;
}
// 设置视频格式
BOOL __stdcall SetVideoFormatV()
{
if (ThreadID != NULL)
{
PostThreadMessage(ThreadID,UM_VID_FORMAT,0,0);
}
return 0;
}
// 线程中有消息循环
BOOL bRet =0;
MSG msg;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
;// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
switch(msg.message)
{
case UM_VID_SOURCE:
capDlgVideoSource(m_hWndCapture);
break;
case UM_VID_FORMAT:
capDlgVideoFormat(m_hWndCapture);
break;
case UM_VID_DISPLAY:
capDlgVideoDisplay(m_hWndCapture);
break;
case WM_DESTROY:
UnInitVideo();
}
}
}