windows程序设计篇——插入位图
来源:互联网 发布:手机号码测吉凶80算法 编辑:程序博客网 时间:2024/06/10 20:15
单刀直入,不废话了。
插入位图的一般步骤:
①首先在资源位插入位图,ID为IDB_BITMAP1,而且要在主程序中包含进新加入的头文件,即resource.h否则,编译器无法找到相应的位图资源。
剩下的这些都是在WM_PAINT这个环节中完成的:
②新建一个位图句柄:hBitMap=LoadBitMap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));
③然后新建一个BITMAP类型的变量叫做BitMap,通过GetObject(hBitMap,sizeof(BITMAP),&BitMap);获得BitMap中的两个参数bmWidth和bmHeight。也可以新建两个int类型的变量,cxBitMap和cyBitMap来保存这两个变量的值。
④这个时候,新建一个设备环境句柄——hdcMem以便将位图信息保存到内存中。
hdcMem=CreateCompatibleDC(hdc);
SelectObject(hdcMem,hBitMap);
⑤运用传说中的BitBlt函数将其输出在屏幕上。
BitBlt(hdc,0,0,cxBmp,cyBmp,hdcMem,0,0,SRCCOPY);
这样,我们的位图就可以很方便地输出在屏幕上了。下面上全部代码:
#include <Windows.h>#include "resource.h"#include "resource1.h"HINSTANCE hInst;LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam){PAINTSTRUCT ps;HDC hdc,hdcMem;static HBITMAP hBitMap;static BITMAP BitMap;static int cxBmp,cyBmp;switch(msg){case WM_PAINT:hBitMap=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));GetObject(hBitMap,sizeof(BITMAP),&BitMap);cxBmp=BitMap.bmWidth;cyBmp=BitMap.bmHeight;hdc=BeginPaint(hwnd,&ps);hdcMem=CreateCompatibleDC(hdc);SelectObject(hdcMem,hBitMap);BitBlt(hdc,0,0,cxBmp,cyBmp,hdcMem,0,0,SRCCOPY);EndPaint(hwnd,&ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;default:return DefWindowProc(hwnd,msg,wParam,lParam);}}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow){MSG msg;HWND hwnd;WNDCLASS wndclass;TCHAR szAppName[]=TEXT("bitmap");wndclass.style=CS_HREDRAW | CS_VREDRAW; 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=szAppName;RegisterClass(&wndclass);hInst=hInstance;hwnd=CreateWindow(szAppName,TEXT("bmp"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,iCmdShow);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return 0;}
0 0
- windows程序设计篇——插入位图
- windows 程序设计 位图
- 《Windows程序设计》之位图操作
- windows程序设计:位图和bitblt
- MFC Windows程序设计--位图,区域
- Windows程序设计-设备无关位图
- Windows程序设计:位图的显示
- 《Windows程序设计》之菜单中使用位图
- windows程序设计学习笔记-设备相关位图
- windows程序设计学习笔记-设备无关位图
- Windows程序设计-位图和位块传输
- windows 程序设计 DIB(设备无关的位图)
- 《Windows程序设计》——字符集
- windows程序设计——CreateProcess()
- Windows程序设计——GetObject
- windows程序设计——键盘
- windows程序设计——鼠标
- windows程序设计——计时器
- MAC地址和IP地址的关系 .
- Ural 1119 Metro(DP) .
- 计算字符个数——来自华为OJ平台测试基础篇
- 1.二分加速法(很容易遇到此类题)
- nyoj 164&&poj2084 Game of Connections 【卡特兰
- windows程序设计篇——插入位图
- BZOJ 2048 2009国家集训队 书堆 数学算法 .
- 使用 IOS 自带 API 扫描二维码
- 李林APUE之进程的封装
- sicily1024
- 《数据挖掘概念与技术》学习笔记 .
- Android中相机和相册使用分析
- jbpm 笔记 流程部署
- fast-json.jar的使用方法