如何去掉当按钮得到焦点时上面的虚线框?

chongbao 2000-12-27 10:24:00
即当用户在按钮上按下左键,则此按钮的上面会出现一框虚线,不管之后用户在哪里放开左键它都出现.
...全文
1049 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chongbao 2001-06-13
  • 打赏
  • 举报
回复
chongbao 2001-06-13
  • 打赏
  • 举报
回复
smn 2000-12-30
  • 打赏
  • 举报
回复
to NiceFeather:
为什么要写两次dcContext.DrawFocusRect( &rItemRect );?
这个rItemRect是什么?
望不吝赐教!
NiceFeather 2000-12-30
  • 打赏
  • 举报
回复
在MSDN里这样解释道:
Because DrawFocusRect is an XOR function, calling it a second time with the same rectangle removes the rectangle from the screen.(因为DrawFocusRect是一个异或操作,呼叫他两次将把他从屏幕的同一区域的正方形移掉),意思是说第一次是绘制,第二次就是删除!
rItemRect就是你要绘制的区域的正方形的rect,它是CRect类

其实不需要上面的代码就能实现你的要求,但是重绘将迫使你要自己绘制这个button上的所有东西,caption就没有了.你要用TextOut来实现他!

好好看看这个例子吧,看懂他将使你明白许多事情的:
http://www.csdn.net/dev/Visual%20C++/source%20code/Button_Control/bitmap_text_button.shtml.htm
NiceFeather 2000-12-29
  • 打赏
  • 举报
回复
重载一个CButton类,取名叫CBeauty,重载DrawItem函数,在其内利用ODS_FOCUS来判断在不在焦点上,如果在:
if ( iState & ODS_FOCUS ) /// If Item Has The Focus
{
dcContext.DrawFocusRect( &rItemRect ); // Draw Focus Rect
dcContext.DrawFocusRect( &rItemRect ); // Draw Focus Rect
}
……
在你使用的时候,用一个button(设style为OwneDraw)去映射这个CBeauty,如:
CBeauty beauty
然后就可以了!不需做任何事情就能达到你的要求。
smn 2000-12-29
  • 打赏
  • 举报
回复
to Winsky:
哪里有SpeedButton?谢谢!
chongbao 2000-12-29
  • 打赏
  • 举报
回复
to alphagx:
如果这个按钮上放了位图的话,还是会出现虚框的,不放则没有

to newx:
我不知道该怎么找到这个按钮的GOTFOCUS事件;我不是用2000

先谢谢大家的关注!
随风bj 2000-12-29
  • 打赏
  • 举报
回复
还是OWNERDRAW
无我无人 2000-12-29
  • 打赏
  • 举报
回复
如果你用Windows2000,可以:
SendMessage(
hWndButton, // the button handler you want to hide focus frame
WM_CHANGEUISTATE,
(WPARAM)MAKELONG(UIS_CLEAR, UISF_HIDEFOCUS),
NULL
);
Winsky 2000-12-29
  • 打赏
  • 举报
回复
改用SpeedButton吧,上面没有框。
无我无人 2000-12-29
  • 打赏
  • 举报
回复
试试在 WM_SETFOCUS 消息响应中直接return 0;
不要调用DefWindowPorc(),如果用MFC,就不要forward base class implement.
如果有效请告知。
alphagx 2000-12-29
  • 打赏
  • 举报
回复
CBitmapButton做出来的按钮是没有虚框的,不信你试试
The_east_key 2000-12-28
  • 打赏
  • 举报
回复
请到http://www.etechbase.net/advsearch.php,将你这个问题输入到检索框,然后选择准确匹配查询,应该可以帮助你解决这个问题的。

http://www.etechbase.net/tech.php也许能够帮助你。
happylaodu 2000-12-27
  • 打赏
  • 举报
回复
仔细观察一下,好多程序里面就是用的vcbear的方法,特别是那些上面画了小图标的按钮。
其实它们的做法是在点击处理函数中SetFocus给其它控件,所以还是可以看到虚线框出来。
vcbear 2000-12-27
  • 打赏
  • 举报
回复
有一个办法就是在WM_GETFOCUS消息处理把焦点SetFocus到别的地方,但是同时这样
焦点也没有了,还是觉得自画比较彻底。
sxbyl 2000-12-27
  • 打赏
  • 举报
回复
我觉得应该只有自画可以实现这个效果

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧