zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    HDU 4325 Contest 3
    HDU 4324 Contest 3
    HDU 4323 Contest 3
    HDU 4321 Contest 3
    HDU 4320 Contest 3
    HDU 4314 Contest 2
    HDU 4313 Contest 2
    HDU 4318 Contest 2
    12-----简单认识下margin
    11-----broder(边框)
  • 原文地址:https://www.cnblogs.com/xiaochi/p/5142519.html
Copyright © 2011-2022 走看看