为什么我的状态栏之间没有淡灰色的"|" 用MFC向导生成的状态栏每个之间都有个淡灰色的分割竖条,和IE的状态栏一样.但我不用向导生成的为什么没有.用SetPaneInfo方法设置的只会出现一块凹一块凸的那种,很丑,不是类型IE的那种.是不是还要指定某个属性才出现?谢谢指教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的状态栏是代码生成的啊,没法用IDE编辑啊。我只想知道怎么用代码弄出那个“|”来 tryvoid SetButtonStyle( int nIndex, UINT nStyle );nStryle = TBBS_SEPARATOR Separator 没有效果啊~TBBS_SEPARATOR是工具栏的风格参数吧。我说的是状态栏的。我试了用向导生成的MFC程序就是有IE状态栏的“|”的。自己设置的却没有 派生:CMyStatusBar#if _MFC_VER >= 0x400在: void CMyStatusBar::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)自己画 //简单方法:static UINT indicators[] ={ ID_SEPARATOR, // status line indicator ID_SEPARATOR, // 加一个 ID=1//用‘|’来代替 m_pMainWnd = pMainFrame;// pMainFrame->m_wndStatusBar.SetPaneInfo(1, 1, SBPS_NOBORDERS, 2); pMainFrame->m_wndStatusBar.SetPaneText(1,"|"); 根本不是这么回事啊!MFC向导生成的根本不用这样,好像是默认就有的。而且还发现一个问题,我得状态栏的颜色是纯灰色的,而IE那些状态栏是颜色上下有一点渐变的效果的。 窗体界面的文件:/************************************************** * 模块: MainFrame.cpp * 功能: 维护主界面程序 **************************************************/#include "../App.h"const UINT CMainFrame::STAT_PANE[] = { 0, 1, 2};.../************************************************** * 注释: 初始化 **************************************************/CMainFrame::CMainFrame(){... // // 创建状态栏 // m_objStatBar.Create(this); m_objStatBar.SetIndicators(STAT_PANE, sizeof(STAT_PANE) / sizeof(UINT)); m_objStatBar.SetPaneInfo(ID_PANE_NUM, STAT_PANE[0], SBPS_NOBORDERS, WIDTH_PANE_NUM); m_objStatBar.SetPaneInfo(ID_PANE_STATE, STAT_PANE[1], SBPS_NOBORDERS, WIDTH_PANE_STATE); m_objStatBar.SetPaneInfo(ID_PANE_VER, STAT_PANE[2], SBPS_NOBORDERS, WIDTH_PANE_VER);...}窗体是在App的InitInstance里创建的。不知道这样和MFC向导生产的有是吗不同之处。 我觉得你向导生成一个工程,然后看看人家的代码,不就知道有没有区别了么?我想SBPS_NORMAL 应该是缺省的风格,而不是NOBORDERS 怎么删除CDatabase对象不内存泄露 mscomm控件OnComm事件 关于操作符<<的重载 急!两个工程的问题 如何实现图形的拉伸显示效果? 大家觉得用vc做射线仪器和频谱分析仪器的图像处理有搞头吗? 一个关于CRecordset的小问题! 调试 如何对多个按钮的BN_ClICK进行映射 mfc新手求解一个问题 Date time picker控件的问题 VC中开启子线程后,不能切换输入法
TBBS_SEPARATOR是工具栏的风格参数吧。我说的是状态栏的。我试了用向导生成的MFC程序就是有IE状态栏的“|”的。自己设置的却没有
#if _MFC_VER >= 0x400
在:
void CMyStatusBar::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
自己画
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_SEPARATOR, // 加一个 ID=1
//用‘|’来代替
m_pMainWnd = pMainFrame;//
pMainFrame->m_wndStatusBar.SetPaneInfo(1, 1, SBPS_NOBORDERS, 2);
pMainFrame->m_wndStatusBar.SetPaneText(1,"|");
MFC向导生成的根本不用这样,好像是默认就有的。而且还发现一个问题,我得状态栏的颜色是纯灰色的,而IE那些状态栏是颜色上下有一点渐变的效果的。
/**************************************************
* 模块: MainFrame.cpp
* 功能: 维护主界面程序
**************************************************/
#include "../App.h"const UINT CMainFrame::STAT_PANE[] =
{
0,
1,
2
};
...
/**************************************************
* 注释: 初始化
**************************************************/
CMainFrame::CMainFrame()
{...
//
// 创建状态栏
//
m_objStatBar.Create(this);
m_objStatBar.SetIndicators(STAT_PANE, sizeof(STAT_PANE) / sizeof(UINT)); m_objStatBar.SetPaneInfo(ID_PANE_NUM, STAT_PANE[0], SBPS_NOBORDERS, WIDTH_PANE_NUM);
m_objStatBar.SetPaneInfo(ID_PANE_STATE, STAT_PANE[1], SBPS_NOBORDERS, WIDTH_PANE_STATE);
m_objStatBar.SetPaneInfo(ID_PANE_VER, STAT_PANE[2], SBPS_NOBORDERS, WIDTH_PANE_VER);
...
}
窗体是在App的InitInstance里创建的。不知道这样和MFC向导生产的有是吗不同之处。