MFC spin控件出现的一些奇怪的问题

原创 2006年06月14日 14:45:00
 

对话框里spin控件会自动吸附到TabOrder在它前一位的控件上,很多时候添加控件的顺序乱掉了,例如从别的地方拷贝,或者修改过TabOrder的顺序而没有注意到spin控件和它的配对Edit控件的顺序时。因此会照成很多奇奇怪怪的错误。

首先一个就是无法吸附到正确的控件上,临时的解决方法就是在OnInitDialog 调用 CSpinButtonCtrl::SetBuddy(CWin*) 函数程序直接指定。但是这会产生更多的问题。

问题多处在需要把 Autobuddy Set buddy integer打上钩的时候(大部分时候会需要的),当spin控件的TabOrderedit控件前面,那么就会出现吸附后的控件粘合处spin控件在edit控件前面,很碍眼。然后是控件有时会莫名其妙地缩短一截。这个问题的主要问题是edit空间被吸附了两次,一次是它TabOrder紧接的那个spin控件的自动吸附,一次就是在OnInitDialog里程序指定的spin控件,这两个有可能是同一个。

然后呢,更变态的问题是可能会有一些控件莫名其妙地出现一个0,我碰到过很多次。一直没明白原因,临时的解决方案是,把那个控件剪切然后再粘贴,就不会了。但是有可能是另外一个控件又出现一个字符0……¥#·!其实问题就是spin控件的自动吸附照成的,spin总吸附TabOrder在它前一个的那个控件,一些可以显示字符的控件会受其控制而显示初始值0,例如Static TextGroup BoxCheck BoxRadio Button 都有可能中招。

其实解决方案很简单,点菜单Layout->Tab Order然后用鼠标点击控件调整TabOrder顺序为edit控件在配对spin的前面一个,那么以上症状就全部不会出现。

最后在MSDN CSpinButtonCtrl类说明看里看到这样的解释(及我的翻译):

To the user, a spin button control and its buddy window often look like a single control.

对于用户来说,步进按钮(spin button、翻动按钮等)和它的伙伴窗口(buddy window 要关联的窗口)可以看成一个控件来使用。

You can specify that a spin button control automatically position itself next to its buddy window,

用户可以将步进按钮放置在其关联窗口的下一个位置,以自动指定它们的关联。(这里的下一位置应该是TabOrder的序号)

and that it automatically set the caption of the buddy window to its current position.

然后步进按钮控件就会自动设定伙伴窗口的标题为它的当前位置。

 

MSDN里的位置也指的是控件在.rc文件里文本描述的顺序,也就是TabOrder显示出来的顺序。直接修改.rc文件里的控件顺序,就响应影响TabOrder,反之效果一样。

SPIN控件的使用问题

  • 2009年10月02日 10:25
  • 26KB
  • 下载

MFC NumericUpDown Spin控件 CSpinButtonCtrl

今天做MFC画面时有一个像,.net中的NumericUpDown空间。 我想MFC和.net控件应该不一样,查了一下,MFC中果然没有这个控件。 帖子说就是:EDIT控件 + Spin控件 现在说一...

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下: OnDeltaposSpin1(NMHDR *pNMHDR, LRESU...

关于mfc重载CListbox控件出现参数错误的问题

mfc参数错误

VC中 spin控件的使用

设置属性:  Auto Buddy(自动取关联控件为TAB顺序前一个) Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制) Wrap(数值超过范围时循环...

Up_Down控件(SPIN)用法及Message解析

这年头搞纯C的人太少了,整个网上都是MFC,找个MSDN也没例子,到处都是写怎么用MFC的,干扰项啊。首先,Up_Down的正确用法是依附在Edit上。依附(Set buddy)方法: 1.发送Me...

CSpinButtonCtrl(SPIN控件)用法

控件的设置在Edit控件上面设置group属性(特别注意)在Spin控件上设置  Auto Buddy 为 true  Set Buddy Integer 为 true  Alignment 为 Ri...

Spin控件使用总结

不知道为什么每个控件都会为难我很久,然后再突然给我提示使我顿悟,唉,可能真的是VC在考验我这个懒人吧,呵呵,我虽然比较懒可是有时候还真的很叫真儿的.这不,一个小小的spin控件和我打了一天的太极,终于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC spin控件出现的一些奇怪的问题
举报原因:
原因补充:

(最多只允许输入30个字)