sendmsg返回值_[求助]Sendmessage函数返回值

各位老师好,请教一个问题,我有时候在编程的时候需要处理一些通过消息传遍过来的数据,这些数据每次里面有字符串,要是数字还好处理字符串就比较难处理,

我收集了5种消息传递字符串的方法,结果用着都不是让我很满意

方法1:

发送方:

wParam = GlobalAddAtom('string...')

PostMessage(HWnd, WM_XYZ, wParam, 0)

接收方:

str = GlobalGetAtomName(wParam)

GlobalDeleteAtom(wParam)

方法2:

var s:string

begin

setlength(s,100);

s:='1111111';

postmessage(frm_handle,wm_user+100,integer(@s[1]),0);

方法3:

sTemp := Pchar(sData);

SendMessage(wHandle,WM_SETTEXT,0,Integer(sTemp));

方法4:

1.

TCommInfo = array[0..50] of Char;

szCommInfo : TCommInfo;

SendMessage(FormHandle, WM_COMMINFOMSG, 0, Integer(PChar(CommInfo)));

2.

CommInfo : String;

SendMessage(FormHandle, WM_COMMINFOMSG, 0, Integer(PChar(CommInfo)));

方法5:

单个字符传递

SendMessage(whwnd,WM_CHAR ,Integer(PChar(S)),0);

上面是我收集的方法,

我又仔细阅读了SendMessage 的函数原型, 知道他有一个返回值

LRESULT ,我现在想实现通过SENDMESSAGE函数的返回值来传递我的参数

LRESULT SendMessage(

HWND hWnd, // handle to destination window

UINT Msg, // message

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

);

MSDN里面的解释,有个朋友用中文翻译了一下

/*

这个返回值就是由相应的响应消息函数的返回值。

例如:

有自定义消息:WM_USER

其响应函数:

LRESULT Cexample::OnUser(WPARAM wParam, LPARAM lParam)

{

//….

return 0;

}

则用SendMessage(hWnd, WM_USER, wParam, lParam);消息,其返回值应该为 0.

那么我在DELPHI里面写了一个窗口子类化的函数,

//消息处理函数

function NewWndProc(WindowHandle : hWnd; Msg : LongInt; ParamW : WParam; ParamL : LParam) : LongInt ; stdcall;

begin

If Msg = autolg.WM_KEY_FLAG Then //如果发送的是我的自定义消息则进入IF

begin

if ParamW=129990 then

begin

//上面的解释说是整个函数的返回值是Sendmessage

//函数的返回值,那么我这里用

result:=9999; //应该返回9999,可是函数返回

//的是0,请问要求得Sendmessage返回值是在这里吗,

//未我而来[编程群10307557] 提问

end;

end;

这个是我写的要求返回值的代码:

procedure TForm1.Button1Click(Sender: TObject);

var

msgType:integer;

msgN:integer;

xx:longint;

hwnd:thandle;

begin

msgType:= RegisterWindowMessage('FISH');

hwnd:=findwindow(nil,'冰淇淋');

xx:=Sendmessage(hwnd,msgtype,1122,0);

edit3.Text:=inttostr(xx); //这里用于显示

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值