我做了一个串口通信程序:用了数据接收线程,数据显示线程(主界面中)。
开始我采取的办法:当接收到数据并且处理完毕后,将处理结果保存到全局变量,然后用postmessage()发送消息到显示窗口,显示窗口的消息函数进行显示。如果用多线程,如何在线程间通信?用PostThreadMessage行吗?怎么用?
开始我采取的办法:当接收到数据并且处理完毕后,将处理结果保存到全局变量,然后用postmessage()发送消息到显示窗口,显示窗口的消息函数进行显示。如果用多线程,如何在线程间通信?用PostThreadMessage行吗?怎么用?
解决方案 »
- 谁给个读写XML的例子
- 有没有组件支持带图像的RTF文件,delphi6的richedit不支持!
- 各位高手好 提一个非常非长奇怪的问题?帮忙回答一下
- qq数据库设计思想???
- 怎样将一个控件收到的消息全部转发另一个控件上去?
- 请问如何中止线程中正在执行的查询?
- 一个简单的数据库问题(在线等待)
- 怎样打开钱箱,我在pb用PrintSend(JOBS,"~h1B~h70~255~h15~h20",255),到我在d6,就不知道用什么函数替代?格式怎样?我刚学d6,谢谢!
- 请问有没有键的相应代码资料,比如#8代表Backspace之类的?
- 请问,数据库保存图片,图片太大,用Tblobfield的loadfromstream会报错
- 求助!
- 哪位有进销存程序?
2 你可以用事件/公用变量等等进行传递
//发送线程
Procedure TThread1.Execute;
var
sMes:String;
pMes:^String;
iTemp:Integer;
begin
sMes:='Test';
New(pMes);
pMes^:=sMes;
PostThreadMessage(thread2.ThreadID,WM_StartRecording,Integer(pMes),0);
iTemp:=111;
PostThreadMessage(thread2.ThreadID,WM_OriginalData,iTemp,0);
end;//接受线程
procedure TThread2.Execute;
var
msg:TMsg;
sMes:String;
pMes:^String;
iTemp:Integer;
begin
//消息循环
while GetMessage(msg,0,0,0) do
begin
Case msg.message of
WM_StartRecording:
begin
//传过来的是String;
pMes:=msg.wParam;
sMes:=pMes^;
Dispose(pMes);
WM_OriginalData:
begin
//传过来的是整数
iTemp:=msg.WParam;
end;
else begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end;
end;
end;
MFC的所有WinControl的所有实例也是共享一个WndProc,但它是将WndProc中的HWND参数进行Hash,直接得出相应的WinControl的指针,再调用其特定对象的wndproc。自己写一个worker工作线程类接收到消息的应该不难吧??
在自己的工作线程类中处理WndProc就可以了
delphi没有做过,c++做过