请输入您要查询的百科知识:

 

词条 CallWindowProc
释义

基本介绍

函数功能:该函数CallWindowProc将消息信息传送给指定的窗口过程。

函数原型:LRESULT CallWindowProc(WNDPROC lpPrevWndFunc,HWND hWnd.UINT Msg,WPARAM wParam,LPARAM IParam);

参数

lpPrevWndFunc:指向前一个窗口过程的指针。如果该值是通过调用GetWindowLong函数,并将该函数中的nlndex参数设为GWL_WNDPROC或DWL_DLGPROC而得到的,那么它实际上要么是窗口或者对话框的地址,要么就是代表该地址的句柄。

hWnd:指向接收消息的窗口过程的句柄。

Msg:指定消息类型。

wParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

IParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

返回值:返回值指定了消息处理结果,它与发送的消息有关。

备注

:使用函数CallWindowsProc可进行窗口子分类。通常来说,同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口,在其消息被传送到该类的窗口过程之前,这些消息是由另一个窗口过程进行解释和处理的。

SetWindowLong函数通过改变与特定窗口相关的窗口过程,使系统调用新的窗口过程来创建子类,新的窗口过程替换了以前的窗口过程。应用程序必须通过调用CallWindowsProc来将新窗日过程没有处理的任何消息传送到以前的窗口过程中,这样就允许应用程序创建一系列窗口过程。

如果定义了STRICT,那么lpPrevWndFunc参数具有WNDPROC数据类型。WNDPROC类型说明如下:

LRESULT(CALLBACK· WNDPROC)(HWND, UINT WPARAM,LPARAM)

如果没有定义STRICT,那么lpPrevWndFunc参数具有FARPROC数据类型。FARPROC类型说明如下:int(FAR WINAPL·FARPROC)()

在C语言中,FARPROC申明表示为一个没有指定参数表的回调函数。然而在 C++中;申明中的空参数表示该函数没有参数。这种微妙的区别有可能引起代码出错。下面是一种解决办法:#ifdef STRICT;WNDPROC MyWindowProcedure;#else;FARPROC MyindowProcedure;#endif IResult=CallWindowProc(MyWindowProcedure,…)

有关该函数的空参数表方面进一步的信息,请参考Bjarne Stroustrup编写的C++编程语言第2版。

对于Windows NT:函数CallWindowsProc function进行了Unicode至ANSf转换处理。如果你直接调用该窗口过程,那么无法利用该转换。

速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib:Unicode:在Windows NT环境中以Unicode和ANSI版本实现。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/17 0:43:33