游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1146|回复: 1

平面地图贴图

[复制链接]

30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2010-6-7 10:58:00 | 显示全部楼层 |阅读模式
//注释即问题。

#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);
}












30

主题

89

帖子

91

积分

注册会员

Rank: 2

积分
91
 楼主| 发表于 2010-6-11 16:32:00 | 显示全部楼层

Re:平面地图贴图

已解决。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 16:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表