VC这段代码什么意思

来源:百度知道 编辑:UC知道 时间:2024/07/05 03:03:22
NeWWndProc函数处理是为了使edit中只能输入0-9和+,-号和backspace
typedef LONG FAR (PASCAL *WndProc)( HWND hWnd,unsigned message,WORD wParam,LONG lParam);

WndProc OldEditWnd;

LONG FAR PASCAL NeWWndProc( HWND hWnd,
unsigned message,
WORD wParam,
LONG lParam)
{
switch(message)
{
case WM_CHAR:
if((wParam>'9'||wParam <'0')&&(wParam!='-'&&wParam!='+'&&wParam!='\b'))
{
return 0;
}
default:
if(OldEditWnd != NULL)
OldEditWnd(hWnd,message,wParam,lParam);
}
}

typedef LONG FAR (PASCAL *WndProc)( HWND hWnd,unsigned message,WORD wParam,LONG lParam);

这个用WndProc类型来代替有后面3个参数的回调函数类型的指针类型。

WndProc OldEditWnd; 这里就是定义了这种类型的一种变量.

LONG FAR PASCAL NeWWndProc( HWND hWnd,
unsigned message,
WORD wParam,
LONG lParam)
{
switch(message)
{
case WM_CHAR:
if((wParam>'9'||wParam <'0')&&(wParam!='-'&&wParam!='+'&&wParam!='\b'))
{
return 0;
}
这一段就是窗口处理函数(用户自己的)

OldEditWnd(hWnd,message,wParam,lParam);

这个就是留给操作系统默认处理的,其中的OldEditWnd为一个函数指针变量

这段代码根本没有必要,可以由CEdit派生一个新的类,并重载PreTranslateMessage函数,在该函数中对WM_CHAR消息中的字符进行过滤即可,类似于NewWndProc

你都说出来了, 还有什么看不懂