定义了一个WM_GETTDATA 消息。我想在消息发送时传两个数据过去,在消息函数中处理,但是搞了半天也没搞定。
例如发送消息
...
fwl := 1234;
fkr := 5500.6;
SendMessage(frmData.Handle,WM_GETTDATA,cardinal(@fwl),cardinal(@fkr));--------------------------------
消息处理函数里面
var
fwl : integer;
fkr : single;
begin
fwl := msg.wParam; // 想在这里得到传过来的值,但是不知道要怎能么转换
fkr := msg.lParam;
end;
例如发送消息
...
fwl := 1234;
fkr := 5500.6;
SendMessage(frmData.Handle,WM_GETTDATA,cardinal(@fwl),cardinal(@fkr));--------------------------------
消息处理函数里面
var
fwl : integer;
fkr : single;
begin
fwl := msg.wParam; // 想在这里得到传过来的值,但是不知道要怎能么转换
fkr := msg.lParam;
end;
解决方案 »
- listbox的数据添加问题?
- 怎样模拟Ctrl+V键?
- 请教:access通过ado数据更新
- 为什么我在编程时不显示控件的属性?
- 能用adoconnection.execute()创建一个表吗?
- 高分Delphi轉義字符求解
- delphi XE正版价格?
- 高分求援:怎样下载网页中连接的文件
- 打印预览时为什么页数会不停增加?已结的贴子有此问题,但打不开
- 我原来用的宽带是单机用户,现在我想让几台机器共享,能实现吗?如能解决,高分相送。
- 菜鸟问题: 请问ProcessEntry32 所在单元是什么? 怎么获得这类API函数的单元名??
- serversocket,clientsocket控件是采用什么协议的
type
MyRecord = record
Name: array[0..10] of char;
ID: array[0..18] of char;
Age: Integer;
end;
PMyRecord = ^MyRecord;
const
WM_START = WM_USER;
MY_UPDATE_LABLE_MSG = WM_START + 1;
MY_RECORD_MSG = WM_START + 2;// 2.
procedure TSubFrm.BtnMsgRecClick(Sender: TObject);
var
Rec: MyRecord;
begin
StrCopy(Rec.ID, PChar(EdtID.Text));
StrCopy(Rec.Name, PChar(EdtName.Text));
Rec.Age := StrToIntDef(EdtAge.Text, 1);
SendMessage(LTopParentHwnd, MY_RECORD_MSG, 0, LPARAM(@Rec));
end;// 3.
procedure MyGetRecordMsg(var msg: TMessage); message MY_RECORD_MSG;procedure TMainFrm.MyGetRecordMsg(var msg: TMessage);
var
pRec: PMyRecord;
begin
pRec := PMyRecord(msg.LParam);
Assert(pRec <> nil);
EdtID.Text := pRec.ID;
EdtName.Text := pRec.Name;
EdtAge.Text := IntToStr(pRec.Age);
end;
WM_GetData=WM_user+100;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMGetData(var Msg:TMessage);message WM_GetData;
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.WMGetData(var msg:TMessage);
begin
showmessage(inttostr((Pinteger(Msg.WParam))^));
showmessage(inttostr((Pinteger(Msg.LParam))^));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fwl : integer;
fkr :integer;
begin
fwl := 1234;
fkr := 5500;
Sendmessage(handle,WM_GetData,Longint(@fwl),LongInt(@fkr));
end;