LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)   
{   
        LONG h,w;
    HDC hdc, memdc;        
    int fd, x, y, z;        
    PAINTSTRUCT ps;   
    OPENFILENAME OFN;   
    TCHAR str[300];   
    TCHAR buffer[300];   
    TCHAR dummy[3];   
    TCHAR lpstrFile[MAX_PATH] = \"\";   
    BITHEADER BitHeadr;   
    BITINFOHEADER BitInfo;   
    COLORREF color = RGB(0, 0, 0);
        static HBITMAP hBitmap;
  
    switch(iMessage)   
    {   
    case WM_COMMAND:   
        switch(LOWORD(wParam))   
        { 
        case ID_FILEOPEN:
                        
            memset(&OFN, 0, sizeof(OPENFILENAME));   
            OFN.lStructSize = sizeof(OPENFILENAME);   
            OFN.hwndOwner = hWnd;   
            OFN.lpstrFilter = TEXT(\"모든 파일(*.*)\\0*.*\\0비트맵(*.bmp)\\0*.bmp\\0JPG(*.jpg)\\0*.jpg\\0\");   
            OFN.lpstrFile = lpstrFile;   
            OFN.nMaxFile = MAX_PATH;   
  
            if(GetOpenFileName(&OFN) == 0)   
            {   
                return 0;   
            }   
            fd = open(OFN.lpstrFile, O_RDONLY);              
               
            read(fd, buffer, sizeof(BitHeadr));   
            memcpy(&BitHeadr, buffer, sizeof(BitHeadr));   
            lseek(fd, 0, SEEK_CUR);   
            read(fd, buffer, sizeof(BitInfo));   
            memcpy(&BitInfo, buffer, sizeof(BitInfo));     
            lseek(fd, BitHeadr.bfOffset, SEEK_SET);        //비트맵 데이터 시작지점으로 이동
                        break;

                case WM_PAINT:           
                        
           hdc = GetDC(hWnd);
           if((BitInfo.biWidth%4) == 0)       
            {   
                for(y = BitInfo.biHeight; y >0; y--)   
                {   
                    for(x = 0; x < BitInfo.biWidth; x++)   
                    {   
                        read(fd, buffer, 3);   
                        color = RGB(buffer[2], buffer[1], buffer[0]);   
                        SetPixel(hdc, x, y, color);   
                        lseek(fd, 0, SEEK_CUR);    
                    }   
                }
                }
        }

WM_COMMAND: 
여기서 출력하는부분만 분리해보려고 저렇게 빼놨는데
아무것도 반응이 없거든. 커맨드내에 저거 넣어놓으면 출력은 됨.
저것만 해결하면 크기조절도 가능할듯싶은데   출력하는 부분을 case ID_FILEOPEN 이 케이스문이랑 분리시키고싶은데
좀 알려줘

fd = open(OFN.lpstrFile, O_RDONLY);              
               
            read(fd, buffer, sizeof(BitHeadr));   
            memcpy(&BitHeadr, buffer, sizeof(BitHeadr));   
            lseek(fd, 0, SEEK_CUR);   
            read(fd, buffer, sizeof(BitInfo));   
            memcpy(&BitInfo, buffer, sizeof(BitInfo));     
            lseek(fd, BitHeadr.bfOffset, SEEK_SET);

이부분이 그림파일열면 정보가 저장되는 부분아니야?