4101|6

90

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

sdk:按钮自绘 [复制链接]

自己createwindow一个按钮,指定了BS_OWNERDRAW属性,为什么wm_drawitem却不响应?

最新回复

UPUPUP  详情 回复 发表于 2009-6-13 13:42
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
贴出你的实现步骤。

Button自给是可以的,肯定是LZ有地方没有做对。
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
createwindow和使用控件应该是一样的。

你可以用控件做一个自绘的button,然后取出属性,看一下有什么特殊的地方。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
LZ,是这样的,你自绘的按钮是接收不到wm_drawitem消息的,但是他的Base窗口可以接收到这个消息,你只需要在Base窗口中重载wm_drawitem这个消息,再在这个消息处理函数中将wm_drawitem消息转发到你自绘的按钮中就行了。
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

5
 
点击按钮,按钮上的图片A换成B,再点击,B又换成A,用DRAWITEMSTRUCT的绘图动作和状态在换图时怎么也不成功。初始化按钮时贴图是不是lpDIS->itemAction & ODA_DRAWENTIRE?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

6
 
自绘制按钮
通过指定BS_OWNERDRAW风格,可以完全控制按钮的外观。当按钮被指定为自绘制风格,则由拥有按钮的窗口负责绘制按钮可能出现的所有状态。当窗口包含有自绘制按钮时,会收到一个WM_DRAWITME消息,用来通知窗口有一个按钮需要绘制。对于该消息,wParam参数包含有按钮ID,lParam则指向一个DRAWITEMSTRUCT结构,该结构定义如下:
typedef struct tagDRAWITEMSTRUCT
{
    UINT CtlType;
    UINT CtlID;
    UINT itemID;
    UINT itemAction;
    UINT itemState;
    HWND hwndItem;
    HDC  hDC;
    RECT rcItem;
    DWORD itemData;
} DRAWITEMSTRUCT;
CtlType设置为ODT_BUTTON(自绘制按钮),CtlID则和wParam一样,包含有按钮ID。itemAction包含标志位,指出需要绘制什么和为什么绘制。这些域中最重要的是itemState,它包含了按钮选择、失效等状态。hDC包含了按钮窗口的设备描述表句柄,rcItem则包含了按钮的尺寸。对自绘制按钮来说,itemDate应该设置为NULL。

WM_DRAWITEM处理程序中包含有许多GDI函数,用来绘制线条、矩形以及绘制按钮所需要的一切。绘制按钮的一个重要方面是要和系统中其它窗口的标准颜色匹配。因为这些颜色是可变的,所以不能硬编码到程序里。您可以通过GetSysColor函数来查询出合适的颜色。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
UPUPUP
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表