自定义消息处理函数,不能操作memo控件?(100)

  • 主题发起人 主题发起人 sdsongge
  • 开始时间 开始时间
S

sdsongge

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己定义了一个消息const my_messagedisp=Wm_user+201;及其处理函数procedure mymesspro2(var mymess:Tmymessage); message my_messagedisp; procedure Tsetpara.mymesspro2(var mymess: Tmymessage);begin memo1.Lines.Add('无法读取相关参数');end;使用 SendMessage(setpara.Handle,my_messagedisp,0,0); 发送消息。消息函数执行了,但是memo1却没有显示'无法读取相关参数' 请问这是为什么?难道消息里也不能操作VCL控件
 
哪位高手能回答一下?
 
你看看是不是句柄不正确造成的。
 
没有问题
 
不会呀,我经常这样干的。你单步调试一下吧,就在 memo1.Lines.Add('无法读取相关参数'); 这一句上,如果这句执行了,没有显示那才叫见鬼了。
 
按你的想法写了一个测试案例,可以的啊。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;Const WM_MYMESSAGE = WM_USER+1;type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } Protected procedure mymesspro2(var mymess:Tmessage); message WM_MYMESSAGE; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin SendMessage(Self.Handle,WM_MYMESSAGE,0,0);end;procedure TForm1.mymesspro2(var mymess: Tmessage);begin memo1.Lines.Add('无法读取相关参数');end;end.
 
今天早上找到原因了。其实和句柄有关的。发送消息和接收消息的函数在两个form(form1,form2)里,我在发送消息的form1里,定义了一个form2类型的局部变量,然后form2.show。其实,delphi在先建form2时,已经生成了一个form2类型的全局变量了。所以一直不成功。问题重在参与,谢谢大家了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部