现在的位置: 首页 > 综合 > 正文

SendMessage

2019年10月10日 ⁄ 综合 ⁄ 共 1614字 ⁄ 字号 评论关闭

 LRESULT SendMessage(

    HWND hWnd, // handle of destination window
    UINT Msg, // message to send
    WPARAM wParam, // first message parameter
    LPARAM lParam  // second message parameter
   );
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。


UINT Msg 是window消息,详细请看消息大全 种类请看winuser.h头文件
UINT Msg, // message to send
1、WM_SETTEXT = $000C;
应用程序发送此消息来设置一个窗口的文本
2、WM_GETTEXT = $000D;
应用程序发送此消息来复制对应窗口的文本到缓冲区
3、WM_GETTEXTLENGTH = $000E;
得到与一个窗口有关的文本的长度(不包含空字符))

WPARAM:32位(双字节)的消息参数。值的格式和意思取决于主要的事件消息类型。在不同的情况下,WPARAM变元可能传输一个坐标点对,使用低字值标识次要的消息类型,提供某些其他的数据类型,或被完全忽略。在很多情况下,WPARAM值将被看成两个独立的字值,分别具有不同的功能。

LPARAM:32位(长整型)的消息参数。这个参数的值和意思取决于主事件消息类型。在不同的情况下,LPARAM变元可能提供一个字符串或记录结构的指针,分解为一组字、字节或标志值,或者往往完全没有用。

 

int TextLength = SendMessage(hWindow, WM_GETTEXTLENGTH, 0, 0);
//---LISTBOX----
int iLBCount;

char ss[255];

 iLBCount = SendMessage(hWindow, LB_GETCOUNT, 0, 0);
 
               if(iLBCount>0)

                { for(int i = 0;i<iLBCount;i++)

                    {
 
    SendMessage(hWindow, LB_GETTEXT, i, (LPARAM)ss);
 
                         Memo1->Lines->Add(ss);
                   
                    }
             
          }

//---------------------------Memo--------------------------------------

 char strCBStr[65535];

 int iTextLen = SendMessage(hWindow, WM_GETTEXTLENGTH, 0, 0);

 SendMessage(hWindow, WM_GETTEXT, iTextLen+1, (LPARAM)strCBStr);

//------------------------------ComboBox--------------------------------

int  iCBCount = SendMessage(hWindow, CB_GETCOUNT, 0, 0);
                for(int i = 0;i<iCBCount;i++)
                {
                    SendMessage(hWindow, CB_GETLBTEXT, i, (LPARAM)strCBStr);
                    Memo1->Lines->Add(strCBStr);
                }

抱歉!评论已关闭.