Windows Mobile 6.0下实现自绘多种状态按钮(Win32)
2009-02-24 20:49 王克伟 阅读(2804) 评论(3) 编辑 收藏 举报前段时间涉及到实现自绘多种状态按钮问题,目前解决办法有两个:一个是使用ImageList_Draw方法,另一个是使用DRAWITEMSTRUCT结构体。不知道各位看官有什么好的建议?
第一种方法
Windows Mobile 6.0 SDK自带的Samples里面的Crossword就有,代码简单标记下:
创建一个自绘按钮:
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。
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.)
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/
版权声明: 本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任的权利。
您可以从这里更方便的找到我的文章。