//注释即问题。
#include <windows.h>
#include <iostream>
LRESULT CALLBACK WindowProc (HWND hwnd,UINT uMsg,WPARAM
wParam,LPARAM lParam)
{
switch(uMsg)
{
default: break;
case WM_CLOSE:
PostQuitMessage(0);
break;
}
return DefWindowProc (hwnd, uMsg, wParam, lParam) ;
}
int WINAPI WinMain( HINSTANCE hinstance,HINSTANCE hprevinstance,
LPSTR lpcmdline,int ncmdshow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG msg;
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hIcon = LoadIcon(NULL, IDI_INFORMATION);
wc.hIconSm = LoadIcon(NULL, IDI_INFORMATION);
wc.hInstance = hinstance;
wc.lpfnWndProc = WindowProc;
wc.cbSize = sizeof(WNDCLASSEX );
wc.lpszClassName = "win";
wc.lpszMenuName = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
wc.cbWndExtra =0;
wc.cbClsExtra =0;
if (!RegisterClassEx(&wc)) return 0;
hwnd=CreateWindowEx(NULL,"win","night",WS_OVERLAPPEDWINDOW |
WS_VISIBLE, 100,100,400,400,NULL ,NULL,hinstance,NULL);
int mapIndex[8*8] = {
2,0,0,0,0,0,0,1, //材1?
2,2,2,0,2,2,0,1,
2,2,2,0,2,2,0,1, //材3
2,2,2,0,0,0,0,0, //材4
2,2,2,2,2,2,2,0, //材5?
2,0,0,0,0,0,0,0, //材6?
0,0,2,2,2,0,0,0, //材7?
0,0,2,0,0,0,1,0 }; //材8?
int i;
HDC hdc = GetDC(hwnd);
HDC mdc = CreateCompatibleDC(hdc);
HBITMAP map[3];
char name_buff[5]; //程序一直出现错误,是因为缓冲区太小....
//0号地图将不显示.为什么?
for(i=0;i<3;++i)
{
sprintf(name_buff,"map%d.bmp",i);
map = (HBITMAP)LoadImage(NULL,name_buff,IMAGE_BITMAP,50,50,LR_LOADFROMFILE);
}
for(i=0;i<64;++i)
{
SelectObject(mdc,map[mapIndex]);
int x = i%8;
int y = i/8;
int Blt_x = x*50;
int Blt_y = y*50;
BitBlt(hdc,Blt_x,Blt_y,50,50,mdc,0,0,SRCCOPY);
}
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return (msg.wParam);
}
|