[资料收集]消息和消息总队列函数(二)

作者在 2007-04-18 06:40:00 发布以下内容
= = = = = = = = = = = = = = = = = = = =
PostThreadMessage
    函数功能:该函数将一个消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回。
    函数原型:BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM
IParam);
    参数
    idThread:其消息将被寄送的线程的线程标识符。如果线程没有消息队列,此函数将失败。当线程第一次调用一个Win 32
USER或GDI函数时,系统创建线程的消息队列。要得到更多的信息,参见备注。
    Msg:指定将被寄送的消息的类型。
    wParam:指定附加的消息特定信息。
    IParam:指定附加的消息特定信息。
   
返回值:如果函数调用成功,返回非零值。如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。如果idThread不是一个有效的线程标识符或由idThread确定的线程没有消息队
    列,GetLastError返回ERROR_INVALID_THREAD。
    备注:消息将寄送到的线程必须创建消息队列,否则调用PostThreadMessage会失败。用下列方法之一来处理这种情况:
   
调用PostThreadMessage。如果失败,调用Sleep,再调用PostThreadMessage,反复执行,直到PostThreadMessage成功。
   
创建一个事件对象,再创建线程。在调用PostThreadMessage之前,用函数WaitForSingleObject来等特事件被设置为被告知状态。消息将寄送到的线程调用PeedMessage(£msg,NULL,WM_USER,WM_USER,PM_NOREMOVE)来强制系统创建消息队列。设置事件,表示线程已准备好接收寄送的消息。
    消息将寄送到的线程通过调用GetMesssge或PeekMesssge来取得消息。返回的MSG结构中的hwnd成员为NULL。
    速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows
CE:1.0及以上版本:头文件:winuser.h;输入库:user32.lib;Unicode:在Windows
NT环境下以Unicode和ANSI方式实现。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
RegisterWindowsMessage
    函数功能:该函数定义一个新的窗口消息,该消息确保在系统中是唯一的。返回的消息值可在调用函数SendMessage或PostMessage时使用。
    函数原型:UINT RegisterWindowsMessage(LPCTSTR lpString);
    参数:
    lpString:指定将被注册的消息的以‘\O’结束的字符串指针。
   
返回值:如果消息被成功注册,返回值是在范围OxCOOO到OxFFFF的消息标识符;如果函数调用失败,返回值是零。要得到更多的错误信息,调用函数GetLastError。
    备注:RegisterWindowMessage通常为合作应用程序间的通信注册消息。
    如果不同的应用程序注册同样的消息字符串,应用程序返回同样的消息值。消息保持注册,直到会话完成。
   
当一个以上的应用程序必须处理同一个消息时,必须使用RegisterWindowMessage。要在窗口类里发送私有消息,应用程序可以使用UM_USER到OX7FFF范围内的任意整数。(在此范围的消息对窗口类私有,而不是对应用程序私有。如,预定义的控制类如BUTTON,
EDIT LISTBOX和COMBOBOX可用此范围的值。)
    速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows
CE:不支持;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = =
ReplyMessage
    函数功能:该函数用于应答由函数SendMessage发送的消息,不返回控制给调用SendMessage的函数。
    函数原型:BOOL ReplyMessage(LRESULTIResult);
    参数:
    IResult:指定消息处理的结果。可能的值由所发送的消息确定。
    返回值:如果调用线程正处理从其他线程或进程发送的消息,返回非零值。如果调用线程不是正处理从其他线程或进程发送的消息,返回值是零。
   
备注:调用此函数,接收消息的窗口程序允许调用SendMessage的线程继续运行,尽管接收消息的线程已返回控制。调用ReplyMessage的线程也继续运行。
    如果消息不是通过SendMessage发送的,或者消息由同一个线程发送,ReplyMessage不起作用。
    速查:Windows
默认分类 | 阅读 2210 次
文章评论,共0条
游客请输入验证码
浏览585075次