背景闪屏
#include
#include"resource.h"
LRESULT CALLBACK WndProc(
HWND hwnd,UINT message,
WPARAM wParam,
LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wndclass;
HWND hwnd;
MSG msg;
char lpszClassName[]="自己创建的窗口";
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=NULL;
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName;
if (!RegisterClass(&wndclass))
return FALSE;
hwnd=CreateWindow(lpszClassName,
"window创建窗口",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
800,400, //////////////////////窗口大小
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
int x=50,y=70,a,b;
LRESULT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch (message)
{
BITMAP bm; static HDC hMemDC1;
case WM_CREATE:
{ HDC hdc;PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps); //开始绘图
hMemDC1= CreateCompatibleDC(hdc);
HBITMAP beijingmap ;//= CreateCompatibleBitmap(hdc,800,400);
beijingmap=(HBITMAP)LoadImage(NULL,"beijing.bmp",IMAGE_BITMAP,800,400,
LR_DEFAULTSIZE|LR_LOADFROMFILE);
SelectObject(hMemDC1,beijingmap);
DeleteObject(beijingmap);
GetObject(hMemDC1,sizeof(hdc),&bm);
BitBlt(hdc,0,0,1000,1000, //背景的位置
hMemDC1,
0,0,
SRCCOPY);
EndPaint(hwnd,&ps); //结束绘图
break;
}
case WM_PAINT:
//添加位图的代码
{
PAINTSTRUCT ps;HBITMAP caomap;HDC hMemDC;BITMAP bm;HBITMAP feimap;
HDC hdc=BeginPaint(hwnd,&ps);
for(b=0;b<=200;b=b+200)
for(a=0;a<=600;a=a+200)
{
caomap=(HBITMAP)LoadImage(NULL,"123.bmp",IMAGE_BITMAP,0,0,
LR_DEFAULTSIZE|LR_LOADFROMFILE);
hMemDC=CreateCompatibleDC(hdc); //创建内存dc,用做缓冲区
SelectObject(hMemDC,caomap); //把兼容位图选入缓冲dc
DeleteObject(caomap);
GetObject(hdc,sizeof(hdc),&bm);
BitBlt(hMemDC1,a,b,1000,1000, //背景的
位置
hMemDC,
0,0,
SRCCOPY);
}
feimap=(HBITMAP)LoadImage(NULL,"bitmap1.bmp",IMAGE_BITMAP,0,0,
LR_DEFAULTSIZE|LR_LOADFROMFILE);
hMemDC=CreateCompatibleDC(hdc);
SelectObject(hMemDC,feimap);
GetObject(hdc,sizeof(hdc),&bm);
BitBlt(hMemDC1,x,y,1000,1000, //飞机的
位置
hMemDC,
0,0,
SRCCOPY);
BitBlt(hdc,0,0,1000,1000,
hMemDC1,
0,0,
SRCCOPY);
/* hdc=BeginPaint(hwnd,&ps);
TextOut(hdc,150,150,"这是我自己创建的第一个窗口哦~",28);*/
EndPaint(hwnd,&ps); //添加位图的代码,结束语句
return 0;
}
break;
case WM_KEYDOWN: ///键盘响应函数,上下、左右移动
{
switch (wParam)
{ case 37: x=x-2; if(x<=1) MessageBox(hwnd,"碰撞","你输了",0); break;
case 38: y=y-2; if(y<=1) MessageBox(hwnd,"碰撞","你输了",0);break;
case 39: x=x+2;if(x>=745)MessageBox(hwnd,"碰撞","你输了",0); break;
case 40: y=y+2;if(y>=330)MessageBox(hwnd,"碰撞","你输了",0); break;
}
InvalidateRect(hwnd,NULL,TRUE);
}break;
case WM_LBUTTONDOWN:
{
MessageBeep(0);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message, wParam,lParam);
}
return 0;
}