对话框增加状态栏后,状态的位置不正确,应该如何设置,在线等待,急??????

dzy983 2006-05-15 09:33:25
我在对话框中增加了状态栏,而且增加成功了,代码如下:
if (!m_wndStatusBar.Create(this)||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
AfxMessageBox("Status Bar not created!", NULL, MB_OK );
}

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

但位置不对,我应该如何设置位置呢?请高手给出实例代码?在线等待!!!
...全文
318 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocainy 2007-02-08
  • 打赏
  • 举报
回复
请在CxxDlg.OnSize 事件中写入下面的语句
CRect rectMain;
CPaintDC dc(this);
GetClientRect(rectMain);

CRect rectBar ;

//工具栏
CToolBar* m_pwndToolBar = (CToolBar*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_TOOLBAR);
m_pwndToolBar->GetClientRect(&rectBar);
m_pwndToolBar->MoveWindow(0,0,rectMain.Width(),rectBar.Height()+4); //如果不加4,经过若干次最窗口改变大小,则工具栏被完全覆盖
//状态栏
CStatusBar* m_pwndStatusBar = (CStatusBar*) AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
m_pwndStatusBar->GetClientRect(&rectBar);
m_pwndStatusBar->MoveWindow(0,cy-rectBar.Height(),rectMain.Width(),rectBar.Height());

//绘制背景色
dc.FillSolidRect(rectMain,RGB(255,255,255)); //设置为白色
dzy983 2006-07-03
  • 打赏
  • 举报
回复
有人知道吗?在线等待!
dzy983 2006-05-16
  • 打赏
  • 举报
回复
to:hrbniu(五彩神牛) 兄弟
如何是对话框程序,窗口如果最大化状态栏位置发生变化应该怎么办啊!!!有办法调吗
to:lixiaosan(小三)兄弟,你发了那些多,到底是那些
蒋晟 2006-05-15
  • 打赏
  • 举报
回复
msdn2.microsoft.com/en-us/library/ccstww6w.aspx
lixiaosan 2006-05-15
  • 打赏
  • 举报
回复
Q123158:
Adding Control Bars to Foundation Classes Dialogs
http://support.microsoft.com/kb/123158/en-us

Visual C++ MFC Samples
DLGCBR32 Sample: Demonstrates Adding a Status Bar and Toolbar to Dialog Boxes
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/html/_sample_mfc_DLGCBR32.asp

http://www.codeguru.com/cpp/w-d/dislog/toolbarsandstatusbars/article.php/c1955/
http://www.codeguru.com/cpp/w-d/dislog/toolbarsandstatusbars/article.php/c1939/
http://www.codeguru.com/cpp/w-d/dislog/toolbarsandstatusbars/article.php/c1949/
dzy983 2006-05-15
  • 打赏
  • 举报
回复
to:hrbniu(五彩神牛) 兄弟
如何是对话框程序,窗口如果最大化状态栏位置发生变化应该怎么办啊!!!有办法调吗
hrbniu 2006-05-15
  • 打赏
  • 举报
回复
呵呵,自己写代码创建菜单栏或工具栏既不好看也不方便

最初我用的也是对话框,后来有全搬到SDI了,还是这个方便
happyness44 2006-05-15
  • 打赏
  • 举报
回复
void CTimeTipDlg::AddStatusBar()
{

m_statusBar.Create( this );
m_statusBar.SetIndicators( nIndicators, sizeof( nIndicators ) / sizeof( UINT ) );

CRect rectClient;
GetClientRect( & rectClient );

m_statusBar.SetPaneInfo( 0, ID_SEPARATOR, SBPS_STRETCH, rectClient.Width() / 2 );
m_statusBar.SetPaneInfo( 1, ID_SEPARATOR, SBPS_STRETCH, 0 );
RepositionBars( AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, ID_SEPARATOR );
}
dzy983 2006-05-15
  • 打赏
  • 举报
回复
to:hrbniu(五彩神牛) 兄弟
这这种方式状态栏是加上去了,但如果窗口最大化后,状态栏位置就不对了,我也一直是这个问题!!在线等待!!!
Kerrie 2006-05-15
  • 打赏
  • 举报
回复
MoveWindow
hrbniu 2006-05-15
  • 打赏
  • 举报
回复
上面的m_StatusBar如下定义:
CStatusBar m_StatusBar; //状态栏变量
最上面的代码直接粘贴在类下就可以
hrbniu 2006-05-15
  • 打赏
  • 举报
回复
呵呵,不用了,我得程序也不只是添加状态栏,不过,按上面的方式应改没有问题

这是我得实际程序
hrbniu 2006-05-15
  • 打赏
  • 举报
回复
首先:
static UINT BASED_CODE indicators[]=
{ //下面三个变量的声明顺序不易颠倒,否则会影响状态栏中项目的显示
ID_INDICATOR_STATUS,
ID_INDICATOR_MOUSE,
ID_INDICATOR_TIME
};
其次:
////////////////////////添加状态栏/////////////////////////////////////
m_StatusBar.Create(this);
m_StatusBar.SetIndicators(indicators,3);

CRect rect1;
GetClientRect(&rect1);
//确定Pane的大小
m_StatusBar.SetPaneInfo(0,ID_INDICATOR_STATUS,SBPS_STRETCH,rect1.Width()-200);
m_StatusBar.SetPaneInfo(1,ID_INDICATOR_MOUSE,SBPS_NORMAL,100);
m_StatusBar.SetPaneInfo(2,ID_INDICATOR_TIME,SBPS_NORMAL,50); m_StatusBar.GetStatusBarCtrl().SetBkColor(RGB(180,180,180));
m_StatusBar.SetPaneText(0,"请先选择设备驱动器...");
//显示状态栏
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,ID_INDICATOR_MOUSE);
dzy983 2006-05-15
  • 打赏
  • 举报
回复
dzy123456@tom.com,收到后,如果行马上结贴!!
hrbniu 2006-05-15
  • 打赏
  • 举报
回复
我这里有个现成的,留个方式
dzy983 2006-05-15
  • 打赏
  • 举报
回复
各们兄弟,还有知道吗!在线等待!!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧