
复编以来遇到的很多问题都是既熟悉又陌生,有的稍微回忆就可以想起答案,有的则死缠烂打折腾几天都没找到答案。最近遇到了一个小问题,花费了1周的时间才在1分钟前解决。
问题是这样产生的:我用Win32写的程序中使用Toolbar,这也是我第一次用Win32操作Toolbar(以前都是用MFC),好在MSDN非常详尽,多数问题迎刃而解,最后只剩下一个问题 - 我希望动态改变程序Toolbar第一个按钮的文字。查询MSDN,答案很简单,发送TB_SETBUTTONINFO给Toolbar即可。但是无论我怎么做,Toolbar第一个按钮的文字就是不变。这一周中当然我没有始终围绕这个问题生活,但它像一个累赘一样控制着我,直到1分钟前发现了MSDN对该消息描述的BUG。
MSND对该消息的描述是这样的:
TB_SETBUTTONINFO Message
Sets the information for an existing button in a toolbar.
...
Parameters
iID - Button identifier.
lptbbi - Pointer to a TBBUTTONINFO structure that contains the new button information.
红色部分就是累赘了我一周的BUG。正确的iID定义应该是:iID - Command identifier of the button. 即该按钮对应的Command,而不是该按钮Zero-based index。微软很大,因此微软的小失误也会被放大,放到一周这么大![]()