GDI 双缓冲贴图

来源:互联网 发布:javascript关键字大全 编辑:程序博客网 时间:2024/05/17 06:49
/*---------------------------------------
GDI 双缓冲DEMOdraw.cCreate By ZhouJun
2014-5-28---------------------------------------*/#include #include "resource.h"//HINSTANCE g_hInst = NULL;HWND g_hWnd = NULL;//functionLRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){static TCHAR szAppName [] = TEXT ("BitBlt") ;HWND hwnd ;MSG msg ;WNDCLASS wndclass ;wndclass.style = CS_HREDRAW | CS_VREDRAW ;wndclass.lpfnWndProc = WndProc ;wndclass.cbClsExtra = 0 ;wndclass.cbWndExtra = 0 ;wndclass.hInstance = hInstance ;wndclass.hIcon = LoadIcon (NULL, IDI_INFORMATION) ;wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;wndclass.lpszMenuName = NULL ;wndclass.lpszClassName = szAppName ;if (!RegisterClass (&wndclass)){MessageBox (NULL, TEXT ("Register failed !"),szAppName, MB_ICONERROR) ;return 0 ;}hwnd = CreateWindow (szAppName, TEXT ("BitBlt Demo"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;if(!hwnd){MessageBox (NULL, TEXT ("CreateWindow failed !"),szAppName, MB_ICONERROR) ;return 0;}g_hWnd = hwnd;g_hInst = hInstance;ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ;while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}return msg.wParam ;}HBITMAP hBmpBackground = NULL;HBITMAP hBmp = NULL;void DrawBMPToMem(HDC hdc){HDC hMemDC = NULL;BITMAP BMP;hMemDC = CreateCompatibleDC(hdc);GetObject(hBmpBackground,sizeof(BITMAP),&BMP);SelectObject(hMemDC,hBmpBackground);BitBlt(hdc,0,0,BMP.bmWidth,BMP.bmHeight,hMemDC,0,0,SRCCOPY); //写入缓冲内存GetObject(hBmp,sizeof(BITMAP),&BMP);SelectObject(hMemDC,hBmp);BitBlt(hdc,0,0,BMP.bmWidth,BMP.bmHeight,hMemDC,0,0,SRCCOPY); //写入缓冲内存DeleteDC(hMemDC);}LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){static int nWidth, nHeight;HDC hdc;PAINTSTRUCT ps ;RECT rt;switch (message){case WM_CREATE:{hBmpBackground = LoadBitmap( ((LPCREATESTRUCT) lParam)->hInstance, MAKEINTRESOURCE(IDB_BITMAP2));hBmp = LoadBitmap( ((LPCREATESTRUCT) lParam)->hInstance, MAKEINTRESOURCE(IDB_BITMAP3));}return 0 ;case WM_PAINT:{HDC hMemDC = NULL;HBITMAP hBitmap = NULL;hdc = BeginPaint (hwnd, &ps);GetClientRect(g_hWnd, &rt);nWidth = rt.right - rt.left;nHeight = rt.bottom - rt.top;hMemDC = CreateCompatibleDC(hdc);hBitmap = CreateCompatibleBitmap(hdc, nWidth, nHeight);SelectObject(hMemDC,hBitmap);DrawBMPToMem(hMemDC);BitBlt(hdc,0,0,nWidth,nHeight,hMemDC,0,0,SRCCOPY);//贴到窗口EndPaint (hwnd, &ps) ;}return 0 ;case WM_DESTROY:{if(hBmpBackground){DeleteObject(hBmpBackground);hBmpBackground = NULL;}if(hBmp){DeleteObject(hBmp);hBmp = NULL;}PostQuitMessage (0) ;}return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;}

中间发现个错误,拿下来修改后,再发上去,卧槽,他妈的格式乱了;

改了半天格式,累觉不爱啊!

0 0
原创粉丝点击