谁能帮我解释下 下面这个程序中LPBYTE  LPDWORD是在哪里定义过的?
#include <windows.h>
#include <stdio.h>
void main()
{
    int    nSize;
    LPBYTE    lpBuf1, lpBuf2;
    LPDWORD lpdw1,lpdw2;
    char * lpBufOut;
    DWORD RGB1,RGB2,RGB3;
    HFILE    hFile1, hFile2, hFileOut;
    LPBITMAPINFO    lpInfo;
    HDC        hDC;
    int        i;
    unsigned char r1,g1,b1;
    
    hFile1 = _lopen("d://1.bmp",OF_READ);
    hFile2 = _lopen("d://2.bmp",OF_READ);
    hFileOut =_lcreat("d://out.bmp",0);
    
    nSize    = GetFileSize((HANDLE) hFile1, NULL);
    lpBuf1    =(unsigned char *) LocalAlloc(LPTR, nSize);
    lpBuf2    = (unsigned char *)LocalAlloc(LPTR, nSize);
       lpBufOut =(char *) LocalAlloc(LPTR, nSize);
    _lread(hFile1, lpBuf1, nSize);
    _lread(hFile2, lpBuf2, nSize);
    memcpy(lpBufOut, lpBuf1, 54);
    for(i=0;i<640*480;i++)
    {    lpdw1=(LPDWORD)(lpBuf1+54+i*4);
        lpdw2=(LPDWORD)(lpBuf2+54+i*4);
        RGB1=lpdw1[0];RGB2=lpdw2[0];
        r1=(((RGB1>>16)&0xff)+((RGB2>>16)&0xff))/2;
        g1=(((RGB1>>8)&0xff)+((RGB2>>8)&0xff))/2;
        b1=((RGB1&0xff)+(RGB2&0xff))/2;
        RGB1=(r1<<16)|(g1<<8)|b1;
        lpdw2=(LPDWORD)(lpBufOut+54+i*4);
        lpdw2[0]=RGB1;
    }
    
    _lwrite(hFileOut, lpBufOut, nSize);
    _lclose(hFile1);
    _lclose(hFile2);
    _lclose(hFileOut);
    lpInfo =(LPBITMAPINFO)(lpBuf1+ 0X0e);
    hDC    =GetDC(NULL);    
    SetDIBitsToDevice(hDC, 200, 200, 640, 480, 0, 0, 0, 480, lpBufOut+ 0x36, lpInfo, DIB_RGB_COLORS);
        
    ReleaseDC(NULL,hDC);
    LocalFree(lpBuf1);
}



 
											





 
	    

 
	
