问一个CallWindowProc的问题...
WNDPROC OldWndProc;
LRESULT NewWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
.............
.............
.............
return CallWindowProc(OldWndProc,hWnd,uMsg,wParam,lParam);
}
在CallWindowProc()这里出错了,何解???
问题点数:20、回复次数:7Top
1 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-01 23:35:39 得分 0
要先保存OldWndProc的地址,然后才能调用啊,
否则没有保存OldWndProc吧,你调用时空地址,肯定出错啊。Top
2 楼smartman(隐君子)回复于 2002-03-02 02:30:12 得分 0
还没调用,在编译时就错了啊..Top
3 楼kingcaiyao(aking)回复于 2002-03-02 09:07:55 得分 0
你应该用:GetWindowLong先保存旧的窗口过程的地址,然后再用SetWindowLong设置新的窗口处理过程。Top
4 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-03-02 09:21:38 得分 20
把
WNDPROC OldWndProc;
改成
FARPROC OldWndProc;
就可以了。
跟是否定义了STRICT有关,看看CallWindowProc的帮助吧。
根据帮助:应该如此使用:
#ifdef STRICT
WNDPROC OldWndProc;
#else
FARPROC OldWndProc;
#endif
下面是帮助片断。
STRICT is defined, the lpPrevWndFunc parameter has the data type WNDPROC. The WNDPROC type is declared as follows:
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
If STRICT is not defined, the lpPrevWndFunc parameter has the data type FARPROC. The FARPROC type is declared as follows:
int (FAR WINAPI * FARPROC) ()
In C, the FARPROC declaration indicates a callback function that has an unspecified parameter list. In C++, however, the empty parameter list in the declaration indicates that a function has no parameters. This subtle distinction can break careless code. Following is one way to handle this situation:
#ifdef STRICT
WNDPROC MyWindowProcedure
#else
FARPROC MyWindowProcedure
#endif
...
lResult = CallWindowProc(MyWindowProcedure, ...) ;
Top
5 楼smartman(隐君子)回复于 2002-03-02 10:56:59 得分 0
谢谢invalid,问题已经解决....Top
6 楼smartman(隐君子)回复于 2002-03-02 11:01:37 得分 0
给不了分的?Top
7 楼mopyman(only you c plus plus)回复于 2002-03-02 13:20:02 得分 0
没有初始化函数指针OldWndProcTop
相关问题
- 关于loadlibrary、getprocaddress、callwindowproc
- API ---callwindowproc的使用
- 求助高手~~~~Button子类化的问题~~不知道为什么CallWindowProc()这个函数来是出错呢?
- SetWindowLong和CallWindowProc具体怎样用
- CallWindowProc()为什么会有错误??
- 调用CallWindowProc(,,,,)函数时出现错误
- 帮忙介绍shell_notifyicon,SendMessage,CallWindowProc,GetWindowLong,SetWindowLong的用法?
- 请解释CallWindowProc的各参数的填写方法及用途(内空)
- 问!!!
- 问!




