MOOC清華《VC++面向對象與可視化程序設計》第5章:位圖資源例程

#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

//定義變量
HDC hdc;			//設備環境句柄
HDC hdcmem;			//內存設備環境句柄
HBITMAP hBm;		//位圖句柄
BITMAP bm;			//BITMAP結構

int WINAPI WinMain(	HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
 {	
   HWND hwnd ;
   MSG Msg ;
   WNDCLASS wndclass ;
   char lpszClassName[] = "位圖";
   char lpszTitle[]= "Example_For_BitMap";
   wndclass.style = 0;
   wndclass.lpfnWndProc = WndProc ;
   wndclass.cbClsExtra	= 0 ;
   wndclass.cbWndExtra	= 0 ;
   wndclass.hInstance = hInstance ;
   wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;
   wndclass.hCursor = LoadCursor( NULL, IDC_ARROW) ;
   wndclass.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH) ;
   wndclass.lpszMenuName = NULL ;
   wndclass.lpszClassName = lpszClassName ;
   if( !RegisterClass( &wndclass))
	{
		MessageBeep(0) ;
		return FALSE ;
	}
	hwnd = CreateWindow(	lpszClassName,
							lpszTitle,
							WS_OVERLAPPEDWINDOW,
							CW_USEDEFAULT,
							CW_USEDEFAULT,
							CW_USEDEFAULT,
							CW_USEDEFAULT,
							NULL,
							NULL,
							hInstance,
							NULL) ;

   hBm=LoadBitmap(hInstance,"pic5");//加載位圖
   GetObject( hBm, sizeof( BITMAP), (LPVOID)&bm) ;//獲取位圖尺寸
   ShowWindow( hwnd, nCmdShow) ;
   UpdateWindow(hwnd); 
   while(GetMessage(&Msg, NULL, 0, 0))
		{
			TranslateMessage( &Msg) ;
			DispatchMessage( &Msg) ;
		}
   return Msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM  wParam,LPARAM  lParam)
{	PAINTSTRUCT ps;
	switch(message)
	{
	case WM_CREATE:
		hdc=GetDC(hwnd);		//獲取設備環境句柄
		hdcmem=CreateCompatibleDC(hdc);		//獲取內存設備環境句柄
		ReleaseDC(hwnd,hdc);	//釋放設備環境句柄
	case WM_PAINT:
		hdc=BeginPaint(hwnd,&ps);
		SelectObject(hdcmem,hBm);	//將位圖選入內存設備環境
		
		//調用函數BitBlt將內存設備環境中的位圖拷貝到設備環境中
		BitBlt(hdc,180,80,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);

		EndPaint(hwnd,&ps);			//釋放設備環境句柄
		break;
	case WM_DESTROY:
		DeleteObject(hBm);		//釋放位圖
		PostQuitMessage(0);
		break;
	default:
		return  DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}


//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by 001.rc

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        101
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

pic5 BITMAP E:\Visual_Cpp_Files\chap5_Project2\chap5_Project2\pic5_2.bmp		//定義位圖資源


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章