鱼C论坛

 找回密码
 立即注册

WIN32程序最简单的双缓冲实例!

已有 498 次阅读2011-9-14 13:05

#pragma once ­

#include <windows.h> ­

#include   <stdio.h> ­

#include <tchar.h> ­

#include "resource.h" ­

­

HINSTANCE hInst; ­

HBITMAP hBitmap;               //位图句柄 ­

HBITMAP hComBit;               //后台句柄(最终) ­

HDC hMenDc;                    //位图的内存环境句柄 ­

HDC hComDC;                    //后台的内存环境句柄(最终) ­

­

//最简单的双缓冲实例 ­

//作者:刘 ­

­

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) ­

{ ­

int wmID,wmEvent; ­

PAINTSTRUCT ps; ­

HDC hdc;                    //实际屏幕环境句柄 ­

­

switch (message) ­

{ ­

case WM_CREATE: ­

­

  hMenDc= CreateCompatibleDC(NULL); ­

  hComDC=CreateCompatibleDC(NULL); ­

­

  hBitmap=(HBITMAP)LoadImage(NULL,"BMP.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); ­

  SelectObject(hMenDc,hBitmap); ­

­

  hComBit = CreateCompatibleBitmap(hMenDc,1000,1000); ­

  SelectObject(hComDC,hComBit); ­

­

  break; ­

case WM_LBUTTONUP: ­

  break; ­

case WM_MOUSEMOVE: ­

  break; ­

case WM_PAINT: ­

  hdc = BeginPaint(hWnd, &ps); ­

­

  BitBlt(hComDC,0,0,1000,1000,hMenDc,0,0,SRCCOPY); ­

  BitBlt(hdc,0,0,1000,1000,hComDC,0,0,SRCCOPY); ­

­

  EndPaint(hWnd, &ps); ­

  break; ­

case WM_DESTROY: ­

  PostQuitMessage(0); ­

  break; ­

default: ­

  return DefWindowProc(hWnd, message, wParam, lParam); ­

} ­

return 0; ­

} ­

­

int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) ­

{ ­

WNDCLASSEX wcex; ­

wcex.cbSize = sizeof(WNDCLASSEX); ­

wcex.style   = CS_HREDRAW | CS_VREDRAW; ­

wcex.lpfnWndProc = (WNDPROC)WndProc; ­

wcex.cbClsExtra  = 0; ­

wcex.cbWndExtra  = 0; ­

wcex.hInstance  = hInstance; ­

wcex.hIcon   = NULL; ­

wcex.hCursor  = LoadCursor(NULL, IDC_ARROW); ­

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); ­

wcex.lpszMenuName = NULL; ­

wcex.lpszClassName = "Ws_class"; ­

wcex.hIconSm  = NULL; ­

RegisterClassEx(&wcex); ­

HWND hWnd; ­

hInst = hInstance; ­

hWnd = CreateWindow("Ws_class", "My windows", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); ­

ShowWindow(hWnd, nCmdShow); ­

UpdateWindow(hWnd); ­

MSG msg; ­

while (GetMessage(&msg, NULL, 0, 0)) ­

{ ­

  TranslateMessage(&msg); ­

  DispatchMessage(&msg); ­

} ­

return (int) msg.wParam; ­

}­


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-14 04:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部