问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

自绘按钮利用drawitemstruct怎么判断各个状态,如正常、鼠标放上点燃、按下、鼠标离开等等,

发布网友 发布时间:2022-04-30 04:57

我来回答

1个回答

热心网友 时间:2023-10-14 13:48

来由:DRAWITEMSTRUCT 为需要自绘的控件或者菜单项提供了必要的信息。在需要绘制的控件或者菜单项对应的WM_DRAWITEM消息函数中得到一个指向该结构的指针。   例子:   virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); (.h中声明)   void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) (.cpp中定义)   这里LPDRAWITEMSTRUCT即指向DRAWITEMSTRUCT结构体的指针。   DRAWITEMSTRUCT结构的定义如下:   typedef struct tagDRAWITEMSTRUCT {   UINT CtlType;   UINT CtlID;   UINT itemID;   UINT itemAction;   UINT itemState;   HWND hwndItem;   HDC hDC;   RECT rcItem;   ULONG_PTR itemData;   } DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;结构成员:   成员:   CtlType   指定了控件的类型,其取值如下表所示。   ODT_BUTTON:按钮控件   ODT_COMBOBOX:组合框控件   ODT_LISTBOX:列表框控件   ODT_LISTVIEW:列表视图控件   ODT_MENU:菜单项   ODT_STATIC:静态文本控件   ODT_TAB:Tab控件   CtlID   指定了自绘控件的ID值,而对于菜单项则不需要使用该成员   itemID   表示菜单项ID,也可以表示列表框或者组合框中某项的索引值。对于一个空的列表框或组合框,该成员的值为–1。这时应用程序只绘制焦点矩形(该矩形的坐标由rcItem 成员给出)虽然此时控件中没有需要显示的项,但是绘制焦点矩形还是很有必要的,因为这样做能够提示用户该控件是否具有输入焦点。当然也可以设置itemAction 成员为合适值,使得无需绘制焦点。   itemAction   指定绘制行为,其取值可以为下表中所示值的一个或者多个的联合。   ODA_DRAWENTIRE:当整个控件都需要被绘制时,设置该值   ODA_FOCUS:如果控件需要在获得或失去焦点时被绘制,则设置该值。此时应该检查itemState成员,以确定控件是否具有输入焦点。   ODA_SELECT   如果控件需要在选中状态改变时被绘制,则设置该值。此时应该检查itemState 成员,以确定控件是否处于选中状态。   itemState   指定了当前绘制操作完成后,所绘项的可见状态。例如,如果菜单项应该被灰色显示,则可以指定ODS_GRAYED状态标志。其取值可以为下表中所示值的一个或者多个的联合。   ODS_CHECKED:如果菜单项将被选中,则可设置该值。该值只对菜单项有用。   ODS_COMBOBOXEDIT:在自绘组合框控件中只绘制选择区域。   ODS_DEFAULT:默认值。   ODS_DISABLED:如果控件将被禁止,则设置该值。   ODS_FOCUS:如果控件需要输入焦点,则设置该值。   ODS_GRAYED:如果控件需要被灰色显示,则设置该值。该值只在绘制菜单时使用。   ODS_HOTLIGHT:Windows 98/Me, Windows 2000/XP: 如果鼠标指针位于控件之上,则设置该值,这时控件会显示高亮颜色。   ODS_INACTIVE:Windows 98/Me, Windows 2000/XP: 表示没有激活的菜单项。   ODS_NOACCEL:Windows 2000/XP: 控件是否有快速键盘。   ODS_NOFOCUSRECT:Windows 2000/XP: 不绘制捕获焦点的效果。   ODS_SELECTED:选中的菜单项。   hwndItem   指定了组合框、列表框和按钮等自绘控件的窗口句柄;如果自绘的对象时菜单项,则表示包含该菜单项的菜单句柄。   hDC   指定了绘制操作所使用的设备环境。   rcItem   指定了将被绘制的矩形区域。这个矩形区域就是上面hDC的作用范围。系统会自动裁剪组合框、列表框或按钮等控件的自绘制区域以外的部分。也就是说rcItem中的坐标点(0,0)指的就是控件的左上角。但是系统不裁剪菜单项,所以在绘制菜单项的时候,必须先通过一定的换算得到该菜单项的位置,以保证绘制操作在我们希望的区域中进行。   itemData   对于菜单项,该成员的取值可以是由   CMenu::AppendMenu、   CMenu::InsertMenu或者   CMenu::ModifyMenu   等函数传递给菜单的值。   对于列表框或这组合框,该成员的值可以为由   ComboBox::AddString、   CComboBox::InsertString、   CListBox::AddString或者   CListBox::InsertString   等传递给控件的值。   如果ctlType 的取值是ODT_BUTTON或者ODT_STATIC, itemData的取值为0。

热心网友 时间:2023-10-14 13:48

来由:DRAWITEMSTRUCT 为需要自绘的控件或者菜单项提供了必要的信息。在需要绘制的控件或者菜单项对应的WM_DRAWITEM消息函数中得到一个指向该结构的指针。   例子:   virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); (.h中声明)   void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) (.cpp中定义)   这里LPDRAWITEMSTRUCT即指向DRAWITEMSTRUCT结构体的指针。   DRAWITEMSTRUCT结构的定义如下:   typedef struct tagDRAWITEMSTRUCT {   UINT CtlType;   UINT CtlID;   UINT itemID;   UINT itemAction;   UINT itemState;   HWND hwndItem;   HDC hDC;   RECT rcItem;   ULONG_PTR itemData;   } DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;结构成员:   成员:   CtlType   指定了控件的类型,其取值如下表所示。   ODT_BUTTON:按钮控件   ODT_COMBOBOX:组合框控件   ODT_LISTBOX:列表框控件   ODT_LISTVIEW:列表视图控件   ODT_MENU:菜单项   ODT_STATIC:静态文本控件   ODT_TAB:Tab控件   CtlID   指定了自绘控件的ID值,而对于菜单项则不需要使用该成员   itemID   表示菜单项ID,也可以表示列表框或者组合框中某项的索引值。对于一个空的列表框或组合框,该成员的值为–1。这时应用程序只绘制焦点矩形(该矩形的坐标由rcItem 成员给出)虽然此时控件中没有需要显示的项,但是绘制焦点矩形还是很有必要的,因为这样做能够提示用户该控件是否具有输入焦点。当然也可以设置itemAction 成员为合适值,使得无需绘制焦点。   itemAction   指定绘制行为,其取值可以为下表中所示值的一个或者多个的联合。   ODA_DRAWENTIRE:当整个控件都需要被绘制时,设置该值   ODA_FOCUS:如果控件需要在获得或失去焦点时被绘制,则设置该值。此时应该检查itemState成员,以确定控件是否具有输入焦点。   ODA_SELECT   如果控件需要在选中状态改变时被绘制,则设置该值。此时应该检查itemState 成员,以确定控件是否处于选中状态。   itemState   指定了当前绘制操作完成后,所绘项的可见状态。例如,如果菜单项应该被灰色显示,则可以指定ODS_GRAYED状态标志。其取值可以为下表中所示值的一个或者多个的联合。   ODS_CHECKED:如果菜单项将被选中,则可设置该值。该值只对菜单项有用。   ODS_COMBOBOXEDIT:在自绘组合框控件中只绘制选择区域。   ODS_DEFAULT:默认值。   ODS_DISABLED:如果控件将被禁止,则设置该值。   ODS_FOCUS:如果控件需要输入焦点,则设置该值。   ODS_GRAYED:如果控件需要被灰色显示,则设置该值。该值只在绘制菜单时使用。   ODS_HOTLIGHT:Windows 98/Me, Windows 2000/XP: 如果鼠标指针位于控件之上,则设置该值,这时控件会显示高亮颜色。   ODS_INACTIVE:Windows 98/Me, Windows 2000/XP: 表示没有激活的菜单项。   ODS_NOACCEL:Windows 2000/XP: 控件是否有快速键盘。   ODS_NOFOCUSRECT:Windows 2000/XP: 不绘制捕获焦点的效果。   ODS_SELECTED:选中的菜单项。   hwndItem   指定了组合框、列表框和按钮等自绘控件的窗口句柄;如果自绘的对象时菜单项,则表示包含该菜单项的菜单句柄。   hDC   指定了绘制操作所使用的设备环境。   rcItem   指定了将被绘制的矩形区域。这个矩形区域就是上面hDC的作用范围。系统会自动裁剪组合框、列表框或按钮等控件的自绘制区域以外的部分。也就是说rcItem中的坐标点(0,0)指的就是控件的左上角。但是系统不裁剪菜单项,所以在绘制菜单项的时候,必须先通过一定的换算得到该菜单项的位置,以保证绘制操作在我们希望的区域中进行。   itemData   对于菜单项,该成员的取值可以是由   CMenu::AppendMenu、   CMenu::InsertMenu或者   CMenu::ModifyMenu   等函数传递给菜单的值。   对于列表框或这组合框,该成员的值可以为由   ComboBox::AddString、   CComboBox::InsertString、   CListBox::AddString或者   CListBox::InsertString   等传递给控件的值。   如果ctlType 的取值是ODT_BUTTON或者ODT_STATIC, itemData的取值为0。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通事故致人死亡,该如何处理? 爱普生LQ1600KIIIH 断色带 爱普生针式打印机LQ1600KⅢH近两月来总频繁中断打印,同时电脑显示是通讯... ACQUA DI PARMA 帕尔玛之水 蓝色地中海系列 桃金娘加州桂中性淡香水 E... 女士香水推荐-ACQUA DI PARMA 帕尔玛之水 优雅木兰女士浓香水 EDP 50... ACQUA DI PARMA帕尔玛之水克罗尼亚系列中性香水套装-适用对象 帕尔玛 | 必须拥有的小众沙龙香 ACQUA DI PARMA/帕尔玛之水克罗尼亚系列黑调男士古龙水-适用对象 ACQUA DI PARMA 帕尔玛之水 克罗尼亚系列 风度中性古龙水 EDC 20ml... ACQUA DI PARMA/帕尔玛之水-绅士男士古龙水EDC 网线和水晶头怎么连,就是那8根线怎么排列?连那个需要注意什么? 白半袖沾上了辣椒油,怎么才能洗下去。 在线等! 白衣服油渍怎么洗 导航定位系统 导航定位运用了什么技术?详细说一下 什么是导航定位技术 苹果6手机无法更新系统,在电脑上怎么更新 iPhone6怎么为啥升级系统要通过电脑升级怎么才能不通过电脑在线升级? iphone 6 Plus怎么用电脑更新系统? 如何在电脑上升级iphone 6? 姐姐的儿子起名,想要摘自诗句的名字,姓蓝,寓意是聪慧、才华横溢。求名字!急急急!!! 形容聪明才华横溢的字有哪些? 毛衣有异味怎么去除 如何除去羊毛的骚味 买了一件皮毛一体的外套,是羊羔毛羊皮的,怎么晒了几天还是一股子羊味,怎么去处理啊 去全羊毛衣的臭味 我的记得,但是密码忘了,申诉成功但没有收到回执单号,怎么办 申诉成功,但被冻结了怎么办 微信申诉成功了,就是没有回执单号怎么弄 微信申诉成功后,发过来的跟密码还是登不上去怎么办? GDI+自绘按钮问题 易语言 北京品牌营销策划公司哪家比较好,比较专业? 在易语言中GDI自绘按钮怎么让图片围绕按钮转? 自绘按钮,怎么实现像radiobutton一样的功能 MFC动态创建自绘button报错 专业的北京品牌咨询公司有哪些?公司目前正计划品牌策划,急需咨询 C++如何给一个自绘Button贴图作背景 MFC对话框程序在客户区自绘关闭、最小化等按钮的具体步骤?还有就是如何关联按钮与相应的响应函数?谢啦 易语言 发送消息点击自绘窗口按钮 MFC 自绘按钮时,当按钮不同状态(普通,悬浮,按下)之间重绘出问题了,请VC大侠们帮忙指点一下~不胜感激!! 易语言汉编模块,全自绘窗口和自绘的滑块条,怎么用自绘的滑块条控制窗口的透明度,和自绘的菜单按钮怎么 易语言 外部窗口的按钮是自绘的 取不到句柄 怎么去模拟点击它? 求助:VC中如何在自绘CheckBox按钮的类(比如这个类为CMyCheckBox)中获取它的选中状态 六点一线(北京)品牌策划有限公司怎么样? MFC按钮问题 用自己的图片制作1个按下去是一张图 弹起来是另一张图 并且能够重复使用 请问我用易语言的真彩模块弄了个玻璃窗口,然后再用EXDUI怎么弄自绘按钮? 关于自绘控件中的if(state & ODS_FOCUS)和if(state)的区别 C++Win32API编程怎么给按钮贴图? 新手关于MFC的问题 MFC CTreeCtrl 折叠按钮怎么自绘制或者怎么换图片?