WIN32常用

//1.设置窗口大小
MoveWindow(hWnd, 300, 200, 700 + 6, 600 + 28, FALSE);
//放在InitInstance用于设置位置与窗口大小
//传递句柄就可以绘图

//2.双缓冲绘图模式
void cDefense::DrawAll()
{
    HDC hDc = GetDC(m_hWnd);
    HDC dcMem = CreateCompatibleDC(hDc);
    //创建与hDc兼容的位图 即一片内存
    HBITMAP hBitmap = CreateCompatibleBitmap(hDc, 700, 600);
    //把这个位图与窗口dcMem绑定起来 即把这片内存与窗口dcMem绑定起来 对dcMem操作则为对这片内存的操作
    SelectObject(dcMem, hBitmap);
    //把所有的图像绘制到dcMem上
    DrawMap(dcMem);

    //把dcMem绘制到hDc上 Select后才能BitBlt
    BitBlt(hDc, 0, 0, 700, 600, dcMem, 0, 0, SRCCOPY);
    ReleaseDC(m_hWnd, hDc);
    DeleteObject(dcMem);
    DeleteObject(hBitmap);
}

void cDefense::DrawMap(HDC dcMem)
{
    HDC dcTemp;
    dcTemp = CreateCompatibleDC(NULL);
    HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"images\\maps\\bg.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    SelectObject(dcTemp, hBitmap);

    BITMAP bitInfo;
    GetObject(hBitmap, sizeof(BITMAP), &bitInfo);
//无透明色贴上去 BitBlt(dcMem,
0, 0, bitInfo.bmWidth, bitInfo.bmHeight, dcTemp, 0, 0, SRCCOPY); DeleteObject(dcTemp); DeleteObject(hBitmap); }
//dcTemp是中间窗口 ,可以选择不同的窗口,一个窗口只能选择一张位图 然后可以贴到另一个窗口的某一个位置上
//总结:创建窗口 创建位图 选定位图 获取位图信息 绑定位图

 

//把一个窗口贴到另一个窗口的某一个位置有透明色
TransparentBlt(dcMem,it->x-bitInfo.bmWidth/2,it->y-bitInfo.bmHeight/2,       bitInfo.bmWidth,bitInfo.bmHeight,dcTemp,0,0,
    bitInfo.bmWidth,bitInfo.bmHeight,RGB(34,177,76));

 

//获取当前鼠标位置
//参数LPARAM lParam
//包含头文件 #inlcude <windowsx.h>
tagPOINT ptCur;
ptCur.x = GET_X_LPARAM(lParam);
ptCur.y=GET_Y_LPARAM(lParam);

 

posted @ 2016-01-19 16:11  喵小喵~  阅读(175)  评论(0编辑  收藏  举报