BITMAP.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples. 
  3. *       Copyright (C) 1992-1997 Microsoft Corporation.
  4. *       All rights reserved. 
  5. *       This source code is only intended as a supplement to 
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the 
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. /**************************************************************************
  11. *  bitmap.c -- support for reading in and drawing bitmaps.
  12. **************************************************************************/
  13. #include <windows.h>
  14. #include <commdlg.h>
  15. #include "plgblt.h"
  16. /**************************************************************************
  17. *
  18. *  function:  DrawBitmap()
  19. *
  20. *  input parameters:  HDC, HBITMAP
  21. *
  22. *  Draw the bitmap into the hdc.  Source rectangle computed to include the
  23. *   whole bitmap.  Destination location is 0,0.
  24. *
  25. *  global variables: none.
  26. *
  27. **************************************************************************/
  28. VOID DrawBitmap (HDC hdc, HBITMAP hbm)
  29. {
  30.     BOOL f;
  31.     HDC hdcBits;
  32.     BITMAP bm;
  33.     hdcBits = CreateCompatibleDC(hdc);
  34.     GetObject (hbm, sizeof(BITMAP), &bm);
  35.     SelectObject(hdcBits,hbm);
  36.     f = BitBlt(hdc,0,0,bm.bmWidth, bm.bmHeight,hdcBits,0,0,SRCCOPY);
  37.     DeleteDC(hdcBits);
  38. }
  39. /**************************************************************************
  40. *
  41. *  function:  GetBitmap()
  42. *
  43. *  input parameters:
  44. *   hdc - hdc to make the bitmap compatible with.
  45. *   hInst - instance handle
  46. *
  47. *  Put up a common dialog box to open a new *.BMP file.
  48. *   Once this is complete, open the file, read in the information,
  49. *   and create a compatible bitmap.
  50. *
  51. *  returns:  handle to the bitmap iff successful.  NULL otherwise.
  52. *
  53. **************************************************************************/
  54. HBITMAP GetBitmap (HDC hdc, HANDLE hInst, BOOL monochrome)
  55. {
  56.     HBITMAP hbm;
  57.     PBITMAPFILEHEADER pbmfh;
  58.     PBITMAPINFOHEADER pbmih;
  59.     PBYTE             pBits;
  60.     int fh;
  61.     int bfOffBits;
  62.     int nbytes;
  63.     OPENFILENAME  of;
  64.     char buffer [MAX_PATH];
  65.     buffer[0] = 0;
  66.     /* set up the OPENFILE structure,
  67.      *  then use the appropriate common dialog
  68.      */
  69.     of.lStructSize       = sizeof (OPENFILENAME);
  70.     of.hwndOwner         = NULL;
  71.     of.hInstance         = hInst;
  72.     of.lpstrCustomFilter = NULL;
  73.     of.nMaxCustFilter    = 0;
  74.     of.nFilterIndex      = 0;
  75.     of.lpstrFile         = buffer;
  76.     of.nMaxFile          = MAX_PATH;
  77.     of.lpstrFileTitle    = NULL;
  78.     of.nMaxFileTitle     = 0;
  79.     of.lpstrInitialDir   = "c:\nt\windows";
  80.     of.lpstrTitle        = NULL;
  81.     of.Flags             = OFN_HIDEREADONLY;
  82.     of.nFileOffset       = 0;
  83.     of.nFileExtension    = 0;
  84.     of.lpstrDefExt       = NULL;
  85.     of.lCustData         = 0;
  86.     of.lpfnHook          = NULL;
  87.     of.lpTemplateName    = NULL;
  88.     if (PRIMARYLANGID(GetUserDefaultLangID ()) == LANG_JAPANESE)
  89.       of.lpstrFilter       = "宿