在编API函数时,怎么老是说WndProc这个函数undeclared identifier,请高手帮忙解答一下!!!谢谢!!!

解决方案 »

  1.   

    程序是这个样子的,我试过了,还是错误的!!!怎么办??????
    #include <windows.h>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>LRESULT CALLBACK Wndproc(HWND,UINT,WPARAM,LPARAM);  //窗口函数的声明int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int 
       nCmdShow)
    {
    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass;
    char lpszClassName[]="WinFill";
    char lpszTitle[]="绘制射线程序";
    wndclass.style=0;
    wndclass.lpfnWndProc=(WNDPROC)WndProc;
    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hInstance=hInstance;
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName=NULL;
    wndclass.lpszClassName=lpszClassName;
    if (!RegisterClass(&wndclass))
    {
    MessageBeep(0);
    return FALSE;
    }
    hwnd=CreateWindow
    (
    lpszClassName,
    lpszTitle,
    WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
    );
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
    while (GetMessage(&Msg,NULL,0,0))
    {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
    }
    return Msg.wParam;
    }
    LRESULT CALLBACK Wndproc(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam)
    {
    HDC hdc;
    PAINTSTRUCT ps;
        static POINT p1;
    static POINT p2[20];
    static int i;
    switch(Msg)
    {
    case WM_RBUTTONDOWN:
    p1.x=LOWORD(lParam);
    p1.y=HIWORD(lParam);
    InvalidateRect(hwnd,NULL,1);
    break;
    case WM_RBUTTONUP:
            InvalidateRect(hwnd,NULL,1);
    break;
    case WM_MOUSEMOVE:
    if((wParam & MK_LBUTTON) && i < 20)
    {
    for(i=0;i<20;i++)
    {
    p2[i].x=LOWORD(lParam);
            p2[i].y=HIWORD(lParam);
    hdc=GetDC(hwnd);
                    SetPixel (hdc, LOWORD (lParam), HIWORD (lParam), 0L);
    ReleaseDC(hwnd,hdc);
    }
    }
    break;
    case WM_PAINT:
    hdc=BeginPaint(hwnd,&ps);
    for(i=0;i<20;i++)
    {
    MoveToEx(hdc,p1.x,p1.y,NULL);
        LineTo(hdc,p2[i].x,p2[i].y);
    }
    EndPaint(hwnd,&ps);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hwnd,Msg,wParam,lParam);
    }
    return 0;
    }
      

  2.   

    wndclass.lpfnWndProc=(WNDPROC)WndProc;改成wndclass.lpfnWndProc=WndProc;
    你再试一下!
      

  3.   

    LRESULT CALLBACK Wndproc(HWND,UINT,WPARAM,LPARAM);  
    Wndproc-->WndProc
      

  4.   

    注意大小写:
    LRESULT CALLBACK Wndproc(HWND,UINT,WPARAM,LPARAM);  //窗口函数的声明//p小写
    wndclass.lpfnWndProc=(WNDPROC)WndProc; //P大写
    LRESULT CALLBACK Wndproc(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam) //p小写C语言是大小写敏感的,名称要统一大小写