VS2010下状态栏显示字体颜色

时间:2020-12-29 16:04:53
各位大侠:

我在vs2010下在主框架下面的oncreate函数中加入如下代码
m_wndStatusBar.SetPaneWidth(1,150);
m_wndStatusBar.SetPaneText(1,_T(" 通信未连接"));  
m_wndStatusBar.SetTipText(1,_T("通信状态"));
m_wndStatusBar.SetPaneTextColor (1, RGB(0,0,0));
m_wndStatusBar.SetPaneBackgroundColor(1,RGB(255,0,0));



如果索引值是1的时候,对应状态栏字体的背景可以改变,但是上面的字体的颜色就是系统默认颜色

但是如果我使用的索引值是0的时候,就可以改变字体的颜色。很奇怪,不知道为什么

非常感谢


真的是很奇怪啊。如果在大小写,数字键的地方写东西,字的颜色都是没法改变的。只有在索引值为0的地方才行,也就是ID是ID_SEPARATOR才行


我想要在状态栏显示一个图标,请问一下,为什么我的状态栏除非在框架类中写代码能显示这个位图,在其他地方调用这个状态栏的对象就不行了?

15 个解决方案

#1


求指导啊,各位,在线等

#2


当前是Disable状态吧,默认那个Pane为1的位置是Caps Lock吧,你按下键盘的Caps Lock,再看看有变化没?

#3


是不是没有及时更新

#4


引用 2 楼  的回复:
当前是Disable状态吧,默认那个Pane为1的位置是Caps Lock吧,你按下键盘的Caps Lock,再看看有变化没?


在cap那个地方时有变化的,按下会从灰色变成黑色

#5


引用 3 楼  的回复:
是不是没有及时更新


我认为是某个地方给我更新了一下。因为比如我设置了红色字体,开始显示的时候闪了一下红色,然后又变回灰色了

#6


不知道是哪里的更新啊? 真的是很奇怪,我自己也没有invalidate

#7


添加消息映射
ON_COMMAND_RANGE(ID_INDICATOR_START,ID_INDICATOR_END,NULL)
ID_INDICATOR_START,ID_INDICATOR_END是static UINT indicators[] 里面的第一个和最后一个。
不会添加的话,你再问我。

#8


引用 7 楼  的回复:
添加消息映射
ON_COMMAND_RANGE(ID_INDICATOR_START,ID_INDICATOR_END,NULL)
ID_INDICATOR_START,ID_INDICATOR_END是static UINT indicators[] 里面的第一个和最后一个。
不会添加的话,你再问我。


哦,请问消息映射不是都有映射的函数吗?你上面写的这个映射函数在哪里?请指教

#9


引用 7 楼  的回复:
添加消息映射
ON_COMMAND_RANGE(ID_INDICATOR_START,ID_INDICATOR_END,NULL)
ID_INDICATOR_START,ID_INDICATOR_END是static UINT indicators[] 里面的第一个和最后一个。
不会添加的话,你再问我。


这个是手动添加吗?在框架类中添加吗? classwizard没找到在哪里添加,请您指导一下

#10


对了,还有一个问题,就是我在static UINT indicators[] 中的其他位置放置位图的时候显示不同位图的时候更新没问题,文字也可以改变,字体背景色可以改变,就是字体颜色没法改变。您觉得是什么原因?

#11


手动添加

#12


在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。

#13


引用 12 楼  的回复:
在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。



非常感谢,按照您说的我的问题已经解决了,请问是不是需要自己截获这个消息,才能够响应。虽然解决了问题,但是原因不是太懂,能否详细的讲解下。

#14


引用 13 楼  的回复:
引用 12 楼 的回复:

在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。



非常感谢,按照您说的我的问题已经解决了,请问是不是需要自己截获这个消息,才能够响应。虽然解决了问题,但是原因不是太懂,能否详细的讲解下。

问题解决了,为啥不给分,擦

#15


引用 14 楼  的回复:
引用 13 楼  的回复:
引用 12 楼 的回复:

在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。



非常感谢,按照您说的我的问题已经解决了,请问是不是需要自己截获这个消息,才能够响应。虽然解决了问题,但是原因不是太懂,能否详细的讲解下。

问题解决了,为啥不给分,擦


回答问题就为了拿分啊,我肯定给你啊,只不过忘记结贴而已,帮助别人是一种乐趣

#1


求指导啊,各位,在线等

#2


当前是Disable状态吧,默认那个Pane为1的位置是Caps Lock吧,你按下键盘的Caps Lock,再看看有变化没?

#3


是不是没有及时更新

#4


引用 2 楼  的回复:
当前是Disable状态吧,默认那个Pane为1的位置是Caps Lock吧,你按下键盘的Caps Lock,再看看有变化没?


在cap那个地方时有变化的,按下会从灰色变成黑色

#5


引用 3 楼  的回复:
是不是没有及时更新


我认为是某个地方给我更新了一下。因为比如我设置了红色字体,开始显示的时候闪了一下红色,然后又变回灰色了

#6


不知道是哪里的更新啊? 真的是很奇怪,我自己也没有invalidate

#7


添加消息映射
ON_COMMAND_RANGE(ID_INDICATOR_START,ID_INDICATOR_END,NULL)
ID_INDICATOR_START,ID_INDICATOR_END是static UINT indicators[] 里面的第一个和最后一个。
不会添加的话,你再问我。

#8


引用 7 楼  的回复:
添加消息映射
ON_COMMAND_RANGE(ID_INDICATOR_START,ID_INDICATOR_END,NULL)
ID_INDICATOR_START,ID_INDICATOR_END是static UINT indicators[] 里面的第一个和最后一个。
不会添加的话,你再问我。


哦,请问消息映射不是都有映射的函数吗?你上面写的这个映射函数在哪里?请指教

#9


引用 7 楼  的回复:
添加消息映射
ON_COMMAND_RANGE(ID_INDICATOR_START,ID_INDICATOR_END,NULL)
ID_INDICATOR_START,ID_INDICATOR_END是static UINT indicators[] 里面的第一个和最后一个。
不会添加的话,你再问我。


这个是手动添加吗?在框架类中添加吗? classwizard没找到在哪里添加,请您指导一下

#10


对了,还有一个问题,就是我在static UINT indicators[] 中的其他位置放置位图的时候显示不同位图的时候更新没问题,文字也可以改变,字体背景色可以改变,就是字体颜色没法改变。您觉得是什么原因?

#11


手动添加

#12


在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。

#13


引用 12 楼  的回复:
在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。



非常感谢,按照您说的我的问题已经解决了,请问是不是需要自己截获这个消息,才能够响应。虽然解决了问题,但是原因不是太懂,能否详细的讲解下。

#14


引用 13 楼  的回复:
引用 12 楼 的回复:

在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。



非常感谢,按照您说的我的问题已经解决了,请问是不是需要自己截获这个消息,才能够响应。虽然解决了问题,但是原因不是太懂,能否详细的讲解下。

问题解决了,为啥不给分,擦

#15


引用 14 楼  的回复:
引用 13 楼  的回复:
引用 12 楼 的回复:

在mainframe的
BEGIN_MESSAGE_MAP

END_MESSAGE_MAP
之间写,就可以了。



非常感谢,按照您说的我的问题已经解决了,请问是不是需要自己截获这个消息,才能够响应。虽然解决了问题,但是原因不是太懂,能否详细的讲解下。

问题解决了,为啥不给分,擦


回答问题就为了拿分啊,我肯定给你啊,只不过忘记结贴而已,帮助别人是一种乐趣