Windows Mobile 6.0下实现自绘多种状态按钮(Win32)
2009-02-24 20:49 王克伟 阅读(2806) 评论(3) 编辑 收藏 举报前段时间涉及到实现自绘多种状态按钮问题,目前解决办法有两个:一个是使用ImageList_Draw方法,另一个是使用DRAWITEMSTRUCT结构体。不知道各位看官有什么好的建议?
第一种方法
Windows Mobile 6.0 SDK自带的Samples里面的Crossword就有,代码简单标记下:
创建一个自绘按钮:
1 2 3 4 | CreateWindow(_T( "Button" ), _T( "" ), WS_VISIBLE | WS_CHILD | BS_OWNERDRAW, 183, 4, 50, 20, hWnd, ( HMENU )IDC_MAIN_ENTER_BUTTON, g_hInst, 0); |
载入一个绘有按钮不同状态的位图,这里表示了按钮的两种状态:Up和Down。
1 2 3 4 5 6 7 8 | g_hImageList = ImageList_LoadImage( g_hInst, MAKEINTRESOURCE(IDB_ENTERBTN), 46, 0, CLR_NONE, IMAGE_BITMAP, 0); |
DrawEdge实现按钮的阴影。红色即是选择要绘制的图像的索引,0表示第一个。(The zero-based index of the image to draw.)
1 2 3 4 5 6 7 | LPDRAWITEMSTRUCT lpDis = (LPDRAWITEMSTRUCT)lParam; DrawEdge(lpDis->hDC, &lpDis->rcItem, (lpDis->itemState & ODS_SELECTED) ? EDGE_SUNKEN : EDGE_RAISED, BF_RECT); ImageList_Draw(g_hImageList, (lpDis->itemState & ODS_SELECTED) ? 0 : 1, lpDis->hDC, 2, 2, ILD_NORMAL); |
第二种方法绘制多个按钮时更好点,等我把两种方法比较一下再写上来。
作者: 王克伟
出处: http://wangkewei.cnblogs.com/
版权声明: 本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任的权利。
您可以从这里更方便的找到我的文章。
出处: http://wangkewei.cnblogs.com/
版权声明: 本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任的权利。
您可以从这里更方便的找到我的文章。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架