menu - CMFCToolbar and CMFCMenubar displaying wrong tooltips -
question asked on https://social.msdn.microsoft.com/forums/vstudio/en-us/f64c99e5-f490-454f-951f-aee794e9506b/cmfctoolbar-and-cmfcmenubar-displaying-wrong-tooltips
i using visual studio 2010, suspect bug still present on 2013 version, compared winfrm.cpp file , ontooltiptext equal on 2 files.
the bug happening @ 7th, 8th or 16th element. although separators count elements counting, tooltips not appear on them.
element can textual menuitem, popup menu or toolbar button.
the string table defines are:
#define ids_seven 7 #define ids_eight 8 #define ids_nine 9 #define ids_ten 10 #define ids_eleven 11 #define ids_twelve 12 #define ids_thirteen 13 #define ids_fourteen 14 #define ids_fifteen 15 #define ids_sixteen 16
and stringtable contents are:
ids_seven "seven" ids_eight "eight" ids_nine "nine" ids_ten "ten" ids_eleven "eleven" ids_twelve "twelve" ids_thirteen "thirteen" ids_fourteen "fourteen" ids_fifteen "fifteen" ids_sixteen "sixteen"
so, when hover mouse pointer 7th, 8th or 16th element wrongly tooltip displaying string id (example:7th element displays "seven").
it happens toolbars , menus sufficient number of items, including in toplevel horizontal menubar.
i discovered guilty function is:
bool cframewnd::ontooltiptext(uint, nmhdr* pnmhdr, lresult* presult)
as nid local variable not absolute id of command, positional order of button, starting 1 instead of 0.
if move strings ids out of range, whenever user wants add new strings, visual studio resource editor see space free , use it, filling again. , problem happen again. so, not valid solution.
i define strings commands. maintaining 4 tfs branches @ same time , change needs go branches, change potentially dangerous when doing merges after.
so, please solution recommend not display stupid tooltips?
update: didn't copy string table was. this:
ids_seven "seven\nseven" ids_eight "eight\neight" ids_nine "nine" ids_ten "ten" ids_eleven "eleven" ids_twelve "twelve" ids_thirteen "thirteen" ids_fourteen "fourteen" ids_fifteen "fifteen" ids_sixteen "sixteen\nsixteen"
in update put stringtable more similar 1 had. had not noticed before common feature of 7, 8 , 16 th strings: had '\n' characters in contents.
i think nobody create menu more 512 menuitems nor toolbars more 512 buttons, solution change strings containing '\n' characters id below 512 numbers above 512.
and works.
Comments
Post a Comment