win32 绘制超酷界面(二)
来源:互联网 发布:可靠韩国代购淘宝店铺 编辑:程序博客网 时间:2024/06/07 02:05
继续着上次的界面,完成类按钮功能的实现和界面文字显示。
1. 存储类按钮的信息【所在区域和对应的事件】
2. 设置对应的鼠标事件【放到上面时,显示手形图标,其他部分显示箭头】
因此,我们需要设计一个存放按钮区域的数组、存放按钮相关信息的结构。本项目设计如下结构:
1. 按钮信息结构
struct _CLICK{ _CLICK(const WCHAR *txt, RECT A) { done = txt; area = A; } const WCHAR *done; // 存放控制信息[作为唯一值] RECT area; // 存放按钮区域};
2.存放的数组和全局变量
static const WCHAR *gClick = NULL; // 获取点击事件的ID【结构体中done :存放控制信息】static std::vector<struct _CLICK> g_click;
3.获取当前是否是按钮
const WCHAR *GetClick(std::vector<struct _CLICK>& link, int x, int y){ for (std::vector<struct _CLICK >::iterator it = link.begin(); it != link.end(); it++) { if((*it).area.left < x && (*it).area.right > x && (*it).area.top < y && (*it).area.bottom > y) { return (*it).done; } } return NULL;}
4.获取当前鼠标在窗口内的坐标
bool GetCursorPosInHwnd(HWND hwnd, POINT& posOut){ POINT pt; if (!GetCursorPos(&pt)) return false; if (!ScreenToClient(hwnd, &pt)) return false; posOut = pt; return true;}
5.在消息处理函数中添加变量和事件
const WCHAR *cmd;POINT pt;case WM_SETCURSOR: if (GetCursorPosInHwnd(hwnd, pt)) { if(GetClick(g_click, pt.x, pt.y)) { SetCursor(LoadCursor(NULL, IDC_HAND)); return TRUE; } } return DefWindowProc(hwnd, msg, wParam, lParam); case WM_LBUTTONDOWN: gClick = GetClick(g_click, ((int)(short)LOWORD(lParam)), ((int)(short)LOWORD((lParam)))); break; case WM_LBUTTONUP: cmd = GetClick(g_click, ((int)(short)LOWORD(lParam)), ((int)(short)LOWORD((lParam)))); if (cmd && cmd == gClick) if (cmd == L"exit") SendMessage(hwnd, WM_CLOSE, 0, 0); break;
工程代码随后附上,也可以去我的下载看看项目代码
0 0
- win32 绘制超酷界面(二)
- win32 绘制超酷界面(一)
- DirectUI界面编程(二)绘制一个按钮
- win32开发(图形绘制)
- win32开发(绘制bitmap)
- 扇形绘制(超低效率)
- shell版俄罗斯方块二:界面绘制
- win32(二)
- win32界面
- win32界面
- Python 如何绘制圆,Python绘制圆(超棒!!)
- Windows系统功能模拟 C++(EasyX插件)—— 4th 界面绘制(二)
- 四、界面编程(二) 深入解析View的绘制流程
- WIN32界面开发之二:GDI+中的局部刷新技术
- WIN32界面开发之三:DUI雏形开发(二)
- WIN32界面开发之三:DUI雏形开发(二)
- WIN32界面开发之DUI雏形开发(二)
- WIN32界面开发之二:GDI+中的局部刷新技术
- 导入excel(Aspose)
- jQuery选择器中的特殊符号和关键字
- 又见KeepAlive HTTP TCP KeepAlive 区别
- iOS 创建一个宏或者头文件类整个工程任何位置都可使用的方法
- android 获取虚拟键盘
- win32 绘制超酷界面(二)
- 贝塞尔曲线动画简单使用
- Spring Framework源码读取-配置
- 生成n位格雷码
- Android中仿微信选择图片和拍照
- 8.python学习笔记:python发送邮件
- tar解压文件到指定目录出现Not found in archive
- Qt中QString::toStdString().c_str() 偶尔存在问题
- SHA加密(单向)