WIN32常用
2016-01-19 16:11
204 查看
//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);
相关文章推荐
- [MySQl]MySQL忘记密码
- 序列化与反序列化
- mybatis 中 foreach 迭代对象中集合
- iOS--如何去除控件上方的小蓝点
- 自学Python九 爬虫实战二(美图福利)
- java学习笔记第二章
- PHP基本语法
- smarty的简单介绍
- 监控 DNS 流量,预防安全隐患五大招!
- mysql修改端口经验
- linux文件名的限制
- 困扰很久的汉诺塔问题c语言实现
- apache 访问www.a.com/index.php/index 去除index.php
- JS拖拽组件开发
- Android Fragment 你应该知道的一切
- 配置 mysql及mariadb的几条准则
- 什么情况使用 weak 关键字,和assign何不同?
- 结束while(cin >> value)
- NSDictionary初始化,使用@{}方法,插入nil时会报空指针异常
- javascript Date Format方法