怎么用sendmessage()发送两个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用sendmessage()发送两个值相关的知识,希望对你有一定的参考价值。

要用sendmessage(HWND,UINT,WPARAM,LPARAM)发送两个变量值,比如X和Y, X=1,Y=1

用怎么做呢?

在网上找了些例子 但都是关于按钮的, 但我要发送的和按钮坐标没关系.. 就是单纯的两个值而已, 望大家指教!

而且, 在接收到消息的那一端,要怎么拆分别得到X和Y的值? 谢谢
LOWORD(lparam)和HIWORD(lparam)是传达按钮坐标信息的时候用的吧?

曾尝试让WPARAM带X值,LPARAM带Y值, 编译的时候出现错误, WPARAM的定义不符..

看这个函数的原型:
第1个参数:HWND,表示你要发送消息的窗口句柄,用FindWindow或者FindowWindowEx就可以获取了,这个容易.
第2个参数:UINT,表示消息ID,有很多消息的类型,这个就要参考MSDN了,比如WM_CREATE,WM_COPYDATA等等
第3个和第4个我们可以理解成:你要发送这个消息的附加参数.
比如吧,你现在要发送2个数值到hWnd去,这个消息是WM_SETTEXT(为了方便处理,我们在发送这个消息,你发送数据可以参考WM_COPYDATA等),2个数字是:100,200的话:
SendMessage(hWnd, WM_SETTEXT, 100, 200);

然后在你的hWnd窗口的消息处理(处理WM_SETTEXT)下:
int nValue1 = int(wParam);
int nValue2 = int(lParam);
就OK了~~
参考技术A SendMessage中的两个参数WPARAM,LPARAM就可以分别带一个值。
但是坐标一般用lParam传递,LOWORD(lparam) 表示x,HIWORD(lparam)表示y。
具体请参考我的笔记:
http://hi.baidu.com/luosiyong/blog/item/484dad8f182d8efc503d9273.html

参考资料:http://hi.baidu.com/luosiyong/blog/item/484dad8f182d8efc503d9273.html

参考技术B 可以有N种方法,看具体情况了|||

mfc中,怎么把一个窗口的编辑框内容调用到另一个窗口的控件里

如果这两个窗口是同一个进程的话,可以通过
GetWindowText

SetWindowText
来实现
如果这两个窗口不是同一个进程的话,可以GetWindowText后用
SendMessage
发送WM_SETTEXT消息来实现,但要用
FindWindow
获取另一个窗口的
句柄
才能SendMessage
或者两个程序通过读写
剪贴板
来实现
也可以用进程之间通信的机制来实现:管道、邮槽、
套接字
、文件映射
还可以通过GetWindowText得到文字后,发送WM_COPYDATA消息来把文字发送过去,对方接受到后取出数据再SetWindowText
参考技术A 你的问题不是获取不到编辑框,而是从一个对话框获取另一个对话框的指针。
如果其中一个对话框是模态的(domodal),那么这个是不可行的。
如果两个对话框没有模态关系,或者是在domodal返回之后,那么关键就是获取另一个对话框的实际指针。这个没有窗口关系没法帮你,如果是非模态父子窗口可以getparent,或者窗口之间有指针传递也是可以的。

以上是关于怎么用sendmessage()发送两个值的主要内容,如果未能解决你的问题,请参考以下文章

SendMessage 发送的消息在其他类层次结构中未收到

winform用SendMessage怎么发送一个鼠标消息,指定鼠标在某个窗口(32,32)处按下,指定坐标在sendmess

delphi 用sendmessage向窗体发送关闭信息!但是窗体有关闭提示信息的对话框! 怎么才能把他关闭呢!

delphi 怎么用Sendmessage发送Ctrl+V消息

c# SendMessage发送汉字

请问delphi利用sendmessage(hwndclose,wm_close,0,0);怎么关闭有关闭提示的窗体!