如何在win32程序里调用本地图片,jpg、bmp之类,在画在窗口里?因为所学习的教材中没有这方面的资料,所以向大家求助。

解决方案 »

  1.   

    GDI+或IPicture接口
    今天刚回答了一个,你自己搜索一下吧
      

  2.   

    谢谢啊!
    不过刚刚在MSDN找到方法了PSS ID Number: Q158898Article Last Modified on 07-18-2001
    --------------------------------------------------------------------------------
    The information in this article applies to: Microsoft Win32 Application Programming Interface (API)
    Microsoft Windows NT Server 4.0 
    Microsoft Windows NT Workstation 4.0 
    Microsoft Windows 95
    Microsoft Windows 2000 Advanced Server 
    Microsoft Windows 2000 Server 
    Microsoft Windows 2000 Professional--------------------------------------------------------------------------------
    Summary
    The LoadImage API can be used to load a bitmap from a BMP file. However, it does not return palette information. This article provides sample code and describes how to retrieve the palette information for the bitmap with LoadImage. More Information
    The following code uses the LoadImage API to load the bitmap as a DIBSection, and then creates a palette from the DIBSection's color table. If no color table is present, a halftone palette is used:    BOOL LoadBitmapFromBMPFile( LPTSTR szFileName, HBITMAP *phBitmap,
       HPALETTE *phPalette )
       {   BITMAP  bm;   *phBitmap = NULL;
       *phPalette = NULL;   // Use LoadImage() to get the image loaded into a DIBSection
       *phBitmap = (HBITMAP)LoadImage( NULL, szFileName, IMAGE_BITMAP, 0, 0,
                   LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
       if( *phBitmap == NULL )
         return FALSE;   // Get the color depth of the DIBSection
       GetObject(*phBitmap, sizeof(BITMAP), &bm );
       // If the DIBSection is 256 color or less, it has a color table
       if( ( bm.bmBitsPixel * bm.bmPlanes ) <= 8 )
       {
       HDC           hMemDC;
       HBITMAP       hOldBitmap;
       RGBQUAD       rgb[256];
       LPLOGPALETTE  pLogPal;
       WORD          i;   // Create a memory DC and select the DIBSection into it
       hMemDC = CreateCompatibleDC( NULL );
       hOldBitmap = (HBITMAP)SelectObject( hMemDC, *phBitmap );
       // Get the DIBSection's color table
       GetDIBColorTable( hMemDC, 0, 256, rgb );
       // Create a palette from the color tabl
       pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) );
       pLogPal->palVersion = 0x300;
       pLogPal->palNumEntries = 256;
       for(i=0;i<256;i++)
       {
         pLogPal->palPalEntry[i].peRed = rgb[i].rgbRed;
         pLogPal->palPalEntry[i].peGreen = rgb[i].rgbGreen;
         pLogPal->palPalEntry[i].peBlue = rgb[i].rgbBlue;
         pLogPal->palPalEntry[i].peFlags = 0;
       }
       *phPalette = CreatePalette( pLogPal );
       // Clean up
       free( pLogPal );
       SelectObject( hMemDC, hOldBitmap );
       DeleteDC( hMemDC );
       }
       else   // It has no color table, so use a halftone palette
       {
       HDC    hRefDC;   hRefDC = GetDC( NULL );
       *phPalette = CreateHalftonePalette( hRefDC );
       ReleaseDC( NULL, hRefDC );
       }
       return TRUE;   } 
    The following code demonstrates how to use the LoadBitmapFromBMPFile function: 
       case WM_PAINT:
       {
         PAINTSTRUCT   ps;
         HBITMAP       hBitmap, hOldBitmap;
         HPALETTE      hPalette, hOldPalette;
         HDC           hDC, hMemDC;
         BITMAP        bm;   hDC = BeginPaint( hWnd, &ps );   if( LoadBitmapFromBMPFile( szFileName, &hBitmap, &hPalette ) )
       {
          GetObject( hBitmap, sizeof(BITMAP), &bm );
          hMemDC = CreateCompatibleDC( hDC );
          hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap );
          hOldPalette = SelectPalette( hDC, hPalette, FALSE );
          RealizePalette( hDC );      BitBlt( hDC, 0, 0, bm.bmWidth, bm.bmHeight,
                  hMemDC, 0, 0, SRCCOPY );      SelectObject( hMemDC, hOldBitmap );
          DeleteObject( hBitmap );
          SelectPalette( hDC, hOldPalette, FALSE );
          DeleteObject( hPalette );
       }
       EndPaint( hWnd, &amp;ps );   }
       break; Additional query words: 4.00 kbdsd BITMAP DDB DIB BMP file LoadImage LoadBitmap Keywords: kbcode kbOSWinNT400 kbOSWin2000 kbOSWin95 kbFAQ kbSDKWin16 kbGDIFAQ 
    Issue Type: kbhowto 
    Technology: kbAudDeveloper kbWin32sSearch kbWin32API