C# 跪求 SendMessage 的函数所有函数信息以及中文解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 跪求 SendMessage 的函数所有函数信息以及中文解释相关的知识,希望对你有一定的参考价值。

我有WM的全部的信息在百度文库下的

现在主要少EM的 edit message ,我要他全部的函数主要是中文解释

例如:
public const int WM_SETTEXT = 12; \\获取值什么的

的参数返回值会根据不同的消息而不同
首先来解析一下这个函数
第一个参数HWND hWnd ,是要将这个消息发送的对象的句柄,hwnd一般指窗口句柄,但这里的窗口是广义上的,一个按钮,一个文本框,一个列表框等等控件这些都可以看成按钮,所以传它们的句柄也可以。
第二个参数UINT Msg就是要发送的消息是什么, 窗口消息一般都以WM开头,意思是WindowMessage 取了2个字母, 而按钮消息一般以BM开头即ButtonMessage,静态类的是
STM,列表框是LBM 等等。 总之你要发什么消息,这里就写什么消息。
第三个和第四个参数是针对消息的附加参数。 这2个参数会参着所传入的消息值的不同而变经。
WPARAM曾经在16位的WINDOWS当中是一个16位的整数即word parameter
LPARAM曾经在16位的WINDOWS当中是一个32位的整数即long parameter
当时要使用LPARAM一般都要用HIWORD和LOWORD宏来取LPARAM的高16位和低16位,因它们分别代表不同的东西。
而现在对于32位的操作系统来说,它们没啥区别了,都是一个32位的整数,之所以没改名称,大概微软为了兼容性吧。
其实在winuser.h中对它们都有定义,追踪过去一般都可以看到是long类型。
此函数的返回值也会因为所发消息的不同而不同

举个例子,当我们单击了窗口中一个按钮中,程序会将一个WM_COMMAND放入程序的消息队列中,于是窗口可以对WM_COMMAND消息进行处理
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
WM_COMMAND, // the message to send
WPARAM wParam, // notification code and identifier
LPARAM lParam // handle to control (HWND)
);
这是MSDN中的说明,第一个肯定是窗口的句柄,第二个就是消息
第三个参数,指明了按钮的通知码和ID
wParam
The high-order word specifies the notification code if the message is from a control. If the message is from an accelerator, this value is 1. If the message is from a menu, this value is zero.
The low-order word specifies the identifier of the menu item, control, or accelerator
高位的字代表通知码,低位字代表它的ID, 我们一般用HIWORD 和LOWORD来分离它们
比如id = LOWORD(wParam) 这样
lParam
Handle to the control sending the message if the message is from a control. Otherwise, this parameter is NULL.
这个代表了控件的句柄,就是所点击的那个按钮的句柄。
再比如这个:
SendMessage(
(HWND) hWnd, // handle to destination window
BM_GETCHECK, // message to send
(WPARAM) wParam, // not used; must be zero
(LPARAM) lParam // not used; must be zero
);
这个BM_GETCHECK消息可以获得一个复选框是否打勾
第一个参数,很显然该写上那个复选框的句柄
第二个参数,就是那个消息
第三和第四个参数在MSDN中写的很清楚,不使用,必须写0
所以调用时我们很明确要写成
SendMessage(hwndCtrl,BM_GETCHECK,0,0);
而它的返回值可以是下边的几个
BST_CHECKED BST_INDETERMINATE BST_UNCHECKED
这个些在winuser.h中有宏定义的,它们本质就是一些整数,只不过这样宏定义以后更容易理解
所以有时候我们就可以用一个if句判断它是不是选中
if(BST_CHECKED == SendMessage(hwndCtrl,BM_GETCHECK,0,0))

//写上处理代码

这些东西都可以在MSDN中查到,OK 差不多就这些
参考技术A 这个目前没有中文版,只有英文的。资料都在微软的 MSDN 网站上,你可以查找到每一个消息的参数及返回值等:http://msdn.microsoft.com/en-us/library/ff485923.aspx。关于其他的控件,你可以在上面这个页面点击 Control Library,然后点你想查看消息的控件 XXX Control -> XXX Control Reference -> XXX Control Messages 便可以看到其他控件的消息、参数及返回值等。本回答被提问者采纳

GetCursorPos/WindowFromPoint/SendMessage

GetCursorPos/WindowFromPoint/SendMessage (用API函数向Edit框发送字符)

GetCursorPos(mPoint);

DTWND:=WindowFromPoint(mPoint);

SendMessage(dtwnd, WM_IME_CHAR,ord(‘A‘),1);

以上用到的三个函数介绍:
GetCursorPos:

函数功能:该函数检取光标的位置,以屏幕坐标表示。

函数原型:BOOL GetCursorPos(LPPOlNT IpPoint);

参数:

IpPint:POINT结构指针,该结构接收光标的屏幕坐标。

返回值:如果成功,返回值非零;如果失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。

备注:光标的位置通常以屏幕坐标的形式给出,它并不受包含该光标的窗口的映射模式的影响。该调用过程必须具有对窗口站的WINSTA_READATTRIBUTES访问权限。

头文件:winuser.h;库文件:user32.lib。
--------------------------------------------------------------------
WindowFromPoint:
函数功能:该函数获得包含指定点的窗口的句柄。

函数原型:HWND WindowFromPoint(POINT Point);

参数:

Point:指定一个被检测的点的POINT结构。

返回值S:返回值为包含该点的窗口的句柄。如果包含指定点的窗口不存在,返回值为NULL。如果该点在静态文本控制之上,返回值是在该静态文本控制的下面的窗口。

备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。应用程序应该使用ChildWindowFromPoint函数进行无限制查询。

头文件:Winuser.h;库文件:user32.lib。
_____________________________________________________________________
SendMessage:

函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。

函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);

参数:

hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

Msg:指定被发送的消息。

wParam:指定附加的消息指定信息。

IParam:指定附加的消息指定信息。

返回值:返回值指定消息处理的结果,依赖于所发送的消息。

备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。

如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。

头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

 

http://blog.csdn.net/diligentcatrich/article/details/5760656

以上是关于C# 跪求 SendMessage 的函数所有函数信息以及中文解释的主要内容,如果未能解决你的问题,请参考以下文章

C#调用SendMessage 用法

跪求!!用C#在ArcEngine环境下开发一个求“图形(包括各种不规则多边形)”最小外接圆面积的方法函数

C#SendMessage用法

Unity中的SendMessage方法

c# SendMessage发送汉字

unity 中 SendMessage用法