Was its Flasch an diesem Code?



  • Ich bin daran ein kleines Programm zu schreiben, in einem Teil des Programms soll eine *.bmp Datei von der Festplatte geladen und angezeigt werden. Ich habe dazu mit Hilfe eines Buches den folgenden Code entworfen:

    LRESULT CALLBACK ChildProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
    {
    
    static BITMAPFILEHEADER *pbmfh;
    static BITMAPINFO *pbmi;
    static BYTE *pBits;
    static int cxDib, cyDib;
    
    switch (uiMessage)
       {
       case WM_CREATE:
    
          DWORD dwFileSize, dwHighSize, dwBytesRead;
          HANDLE hFile;
    
          hFile = CreateFile ("test.bmp", GENERIC_READ,
                              FILE_SHARE_READ, NULL,
                              OPEN_EXISTING,
                              FILE_FLAG_SEQUENTIAL_SCAN,
                              NULL);
          dwFileSize = GetFileSize (hFile, &dwHighSize);
          pbmfh = (BITMAPFILEHEADER *) malloc (dwFileSize);
          ReadFile (hFile, pbmfh, dwFileSize,
                    &dwBytesRead, NULL);
    
          pbmi = (BITMAPINFO *) (pbmfh + 1);
          pBits = (BYTE *) pbmfh + pbmfh->bfOffBits;
          cxDib = pbmi->bmiHeader.biWidth;
          cyDib = abs(pbmi->bmiHeader.biHeight);
          HDC hdc;
          hdc = GetDC (hWnd);
    
          SetDIBitsToDevice (hdc, 0, 0,
                             cxDib, cyDib,
                             0,0,0, cyDib,
                             pBits,
                             pbmi,
                             DIB_RGB_COLORS);
    
          ReleaseDC (hWnd, hdc);
          free (pbmfh);
          return 0;
    
    default:
    return DefWindowProc(hWnd, uiMessage, wParam, lParam);
    
        }
       }
    

    Das Ganze fuktioniert aber nicht, warum?



  • Ähm, nimm mal LoadImage und BitBlt & Co.


Anmelden zum Antworten