读书人

基础常识有关问题关于消息

发布时间: 2012-09-27 11:11:17 作者: rapoo

基础常识问题,关于消息。

Delphi(Pascal) code
private    procedure SyncCall(var Msg: TMessage); message WM_USER;  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin  SyncCall();//直接调用过程  //通过消息触发过程  SendMessage(Handle, WM_USER, Longint(stMessage), Longint(Data));end;procedure SyncCall();beginend;procedure TForm1.SyncCall(var Msg: TMessage);beginend;

以上两种方式有何区别??
1:直接调用过程
2:通过发送消息触发过程
在我的理解是:直接调用和发送消息因为没有用到多线程,都得在执行完了SyncCall函数后才能进行其它操作?
不知道这样理解是否正确?

[解决办法]
单线程作业的Project,大多数情况下不需要使用消息来专门调用某个过程,直接调用就行了,多线程用消息转一下通常是为了告诉界面一些信息,比如作完了,作到30%了,发生错误了等等,好让界面上显示某些信息。
[解决办法]
发消息会触发WndProc,如果操作不当会导致堵塞,直接调用就只是把它当成一个子处理模块,应该比较快。。

读书人网 >.NET

热点推荐