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
原创粉丝点击