关于按钮自绘的问题。
BOOL isPress = ctrl->itemState & ODS_SELECTED;
BOOL isPos = ctrl->itemState & ODS_HOTLIGHT;
这个ODS_HOTLIGHT和ODS_SELECTED好像不一样,无法用以下这种形式
if(isPress)
DrawIconEx(……)
,那么这个ODS_HOTLIGHT该如何用,或者有其他方式实现鼠标在按钮之上 ,按钮能高亮显示的方法吗 (SDK)?不要用MFC,一点看不懂。
VC 如何使鼠标悬停在按钮上时,按钮以高亮显示。代码不要用MFC,一定用SDK。
答案:2 悬赏:30 手机版
解决时间 2021-02-20 18:41
- 提问者网友:wodetian
- 2021-02-19 18:32
最佳答案
- 五星知识达人网友:荒野風
- 2021-02-19 18:48
在WM_MOUSEMOVE消息响应中追踪WM_MOUSEHOVER与WM_MOUSELEAVE消息
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
TrackMouseEvent(&tme);
在WM_MOUSEHOVER消息相应中绘制按钮为高亮状态
在WM_MOUSELEAVE消息相应中绘制按钮为普通状态
当然,也可以不需要追踪WM_MOUSEHOVER消息,只需要在WM_MOUSEMOVE中直接判断鼠标在按钮内就绘制按钮为高亮也可以
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
TrackMouseEvent(&tme);
在WM_MOUSEHOVER消息相应中绘制按钮为高亮状态
在WM_MOUSELEAVE消息相应中绘制按钮为普通状态
当然,也可以不需要追踪WM_MOUSEHOVER消息,只需要在WM_MOUSEMOVE中直接判断鼠标在按钮内就绘制按钮为高亮也可以
全部回答
- 1楼网友:雾月
- 2021-02-19 19:05
CButton::SetState
void SetState( BOOL bHighlight );
-------------------------------------------
建一个 按钮:
CButton myButton;
myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(10,10,100,30), pParentWnd, 1);
按下去(凹陷,高亮度,用TRUE 或 非 0 值):
myButton.SetState( TRUE );
弹上来 (并取消了高亮度)
myButton.SetState( 0 );
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯