1829
- 收藏
- 点赞
- 分享
- 举报
Windows Mobile实现自绘多种状态按钮(Win32)
前段时间涉及到实现自绘多种状态按钮问题,目前解决办法有两个:一个是使用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);
第二种方法绘制多个按钮时更好点,等我把两种方法比较一下再写上来。
转至[url]http://www.cnblogs.com/wangkewei/archive/2009/02/24/1397490.html[/url]
第一种方法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);
第二种方法绘制多个按钮时更好点,等我把两种方法比较一下再写上来。
转至[url]http://www.cnblogs.com/wangkewei/archive/2009/02/24/1397490.html[/url]
我来回答
回答0个
时间排序
认可量排序

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
相关问答
-
2010-01-28 10:15:14
-
2008-09-18 14:26:02
-
2012-12-05 11:01:50
-
2012-12-04 13:11:08
-
2012-12-04 11:37:28
-
2012-12-05 13:33:42
-
2012-12-04 13:07:48
-
2008-08-14 01:01:56
-
2012-12-05 14:10:27
-
2012-12-05 14:05:13
-
2012-12-04 12:57:16
-
2012-12-04 11:57:50
-
2008-07-06 21:15:38
-
2010-07-19 15:15:27
-
2012-12-04 11:51:25
-
2012-12-04 11:57:10
-
2012-12-04 11:49:35
-
2008-05-26 22:18:30
-
2012-12-05 13:32:58
无更多相似问答 去提问

点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认