函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
参数:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息指定信息。
IParam:指定附加的消息指定信息。
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。
如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。
----------------------------------------------------------------
Windows是一个消息驱动式系统,SendMessage是应用程序和应用程序之间进行消息传递的主要手段之一,这里我搜集整理了SendMessage函数的详细参数介绍,以备自用。
VFP声明:
DECLARE INTEGER SendMessage IN user32;
INTEGER hWnd,;
INTEGER wMsg,;
INTEGER wParam,;
INTEGER lParam
参数1:hWnd-窗口句柄。窗口可以是任何类型的屏幕对象。
参数2:wMsg-用于区别其他消息的常量值.
参数3:wParam-通常是一个与消息有关的常量值,也可能是窗口或控件的句柄.
参数4: lParam-通常是一个指向内存中数据的指针。
wMsg参数常量值:
#DeFine WM_CREATE 0x01
创建一个窗口
#DeFine WM_DESTROY 0x02
当一个窗口被破坏时发送
#DeFine WM_MOVE 0x03
移动一个窗口
#DeFine WM_SIZE 0x05
改变一个窗口的大小
#DeFine WM_ACTIVATE 0x06
一个窗口被激活或失去激活状态
#DeFine WM_SETFOCUS 0x07
一个窗口获得焦点
#DeFine WM_KILLFOCUS 0x08
一个窗口失去焦点
#DeFine WM_ENABLE 0x0A
一个窗口改变成Enable状态
#DeFine WM_SETREDRAW 0x0B
设置窗口是否能重画
#DeFine WM_SETTEXT 0x0C
应用程序发送此消息来设置一个窗口的文本
#DeFine WM_GETTEXT 0x0D
应用程序发送此消息来复制对应窗口的文本到缓冲区
#DeFine WM_GETTEXTLENGTH 0x0E
得到与一个窗口有关的文本的长度(不包含空字符)
#DeFine WM_PAINT 0x0F
要求一个窗口重画自己
#DeFine WM_CLOSE 0x10
当一个窗口或应用程序要关闭时发送一个信号
#DeFine WM_QUERYENDSESSION 0x11
当用户选择结束对话框或程序自己调用ExitWindows函数
#DeFine WM_QUIT 0x12
用来结束程序运行
#DeFine WM_QUERYOPEN 0x13
当用户窗口恢复以前的大小位置时,把此消息发送给某个图标