CreateWindowEx 动态创建 TOOLBAR 的几个问题!
大家看下这个图片,主窗口不是动态创建的,其中的MENU是使用编程工具的菜单编辑器创建的,只有其中的TOOLBAR是使用 CreateWindowEx 动态创建的,现在只能作到连接上了动态创建的IMAGE LIST 控件并正常显示了图片,但还有几个地方我要修改,可尝试了几次都没成功,所以请有这方面经验的前辈指点:
1、背景:我怎么设置才可以使动态创建的TOOLBAR跟MENU和客户区都是一个背景色呢?(为了处理TOOLBAR发送给主窗口的 WM_NOTIFY 消息,我在程序里子类化的是主窗口而不是TOOLBAR,请问在主窗口的子类化回调中截获啥消息可以修改这个背景色不???)
2、焦点外观:我这里创建时使用了 TBSTYLE_FLAT 风格,创建的不是3D效果而是平面效果的工具栏,这个风格下当鼠标移到按钮上时就会自动出现一个焦点外形框(如图片中的1、2按钮),可正常的情况应该是:当鼠标移出按钮时,这个外形框自动消失,可我创建的这个却不是,即使鼠标移走了,外形框还在。(第3个按钮我截图时没有移上去鼠标,所以他还没有这个外形框,只要我移上去一次,这个外形框就一直不消失了。。),请问这个怎么处理???
3、文本:TOOLBAR的按钮上可以在图片下面显示文本的,可我怎么尝试都没有成功,我的按钮是使用 SendMessage 发送 TB_ADDBUTTONS 消息传递了 TBBUTTON 结构数组加上的,其中每个按钮我也设置了 BTNS_SHOWTEXT 风格,据MSDN上说没这个显示不了文本,可有这个标志我也显示不出来,我尝试过 SendMessage 发送 TB_SETBUTTONINFO 消息传递 TBBUTTONINFO 结构试图加文本没成功,其实我最想实现的是在 TB_ADDBUTTONS 消息传递 TBBUTTON 结构数组时给每个按钮的 .iString 成员赋值让其显示文本,按MSDN上说,这个 .iString 成员是按钮字符串的索引或者是包含按钮文本的字符串缓冲区指针,可我用个字符串将指针赋值给该成员结果不行,最后我又尝试 SendMessage 发送 TB_ADDSTRING 消息,这个消息按MSDN上解释是将新字符串增加到工具栏字符串池中(可能是我设置的格式不对?)总之我增加完之后,又在 .iString 成员上试图设置为索引来显示文本,可结果还是不行。。。
基本上就这3处问题了,有经验的前辈们多多帮忙,感激不尽!!!
[解决办法]
我现在在写别的程序不方便调试,你可比较一下我这个帖子里创建工具栏的代码,我那个没你说的问题,你可看看和你写的是在哪里有区别
http://topic.csdn.net/u/20100506/20/aeb7fb6f-8afc-4acf-8694-9be0b49ae8f7.html
实现一个多页面浏览器源码研究第一阶段:VB6下用类MFC方式封装IE核心浏览器的可行性
[解决办法]
有没有把spyxx搞出来,比较一下自己创建的toolbar和别人的显示正常的有啥区别
[解决办法]
SDK诸多控件里面唯一没有研究过的就是ReBar和ToolBar,杨过写的代码不错,你可以参考一下。。。
[解决办法]
外观控制需要自绘, 在父窗口中处理NM_CUSTOMDRAW消息