关于状态栏和子窗口的问题

lowiq 2003-08-28 09:40:18
我在MainFrame中重载了OnCreate 并修改了状态栏,但是下面两句语句却不能很好执行:
m_wndStatusBar.SetPaneText(1,((CDataProjectApp*)AfxGetApp())->m_UserSet.m_NowUser);
m_wndStatusBar.SetPaneText(2,((CDataProjectApp*)AfxGetApp())->m_UserSet.m_LoginCurrentTime.Format("%y-%b-%d"));
编译没问题,但只能显示时间,用户名却没显示出来,
我换成
m_wndStatusBar.SetPaneText(2,((CDataProjectApp*)AfxGetApp())->m_UserSet.m_NowUser);
m_wndStatusBar.SetPaneText(1,((CDataProjectApp*)AfxGetApp())->m_UserSet.m_LoginCurrentTime.Format("%y-%b-%d"));
则用户名出来了,时间却不能显示,这个窗格总是空白的?!
请问如何解决啊?

还有就是我从CChildFrm 继承了我的CQueryChildFrm,我想在调用了OpenDoucmentFile(NULL)以后,暂时不
显示出窗口来,所以我重载PreCreateWindow,并加了语句:cs.style &=~WS_VISIBLE 但是还是会显示出窗口

我的目的是窗口建立后暂时不显示,等我要用了再显示出来,请问该如何处理啊?
...全文
29 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqinggao 2003-09-01
  • 打赏
  • 举报
回复
刚才测试通过:

在CMainFrame类的头文件的消息定义处增加:
afx_msg void OnUpdateStatusBar(CCmdUI* pCmdUI);

在其实现文件消息映射处增加:
ON_UPDATE_COMMAND_UI(ID_YOUR_PANE_NUMBER, OnUpdateStatusBar)

在实现文件中添加函数:

void CMainFrame::OnUpdateStatusBar(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(TRUE);
}

就可以了
fengqinggao 2003-08-31
  • 打赏
  • 举报
回复
实在不行,你就按照MSDN上提示的方法去做吧,就是我上面讲的第一种方法。

其实 bcp1 所说的方法和我的第二种方法是相同的,只是他后面放了三个格而已,我的方法在我这里是可以的,而且一直是这么做的,呵呵
lowiq 2003-08-30
  • 打赏
  • 举报
回复
To bcpl:
第二个问题经你的提示 我已经解决
但是第一个问题 还是没法解决

我是按照你的说法做了毅变得了,但是还是跟原来一样

求教?!
xghost 2003-08-29
  • 打赏
  • 举报
回复
学习!
xiaohedou 2003-08-28
  • 打赏
  • 举报
回复
学习!
bcpl 2003-08-28
  • 打赏
  • 举报
回复
第一个问题:
1. 加上字符串资源ID_INDICATOR_USER,值为"当前用户"
2. 加上字符串资源ID_INDICATOR_TIME, 值为"2003-12-31"
3. 在MainFrm.cpp里把
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
换成
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_USER,
ID_INDICATOR_TIME,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
最后按你原来做的设置状态文本即可

第二个问题:
重载CChildFrame::ActivateFrame
void CChildFrame::ActivateFrame(int nCmdShow)
{
CMDIChildWnd::ActivateFrame(SW_HIDE);
}
fengqinggao 2003-08-28
  • 打赏
  • 举报
回复
我也碰到类似的问题,据MSDN中CStatusBar个SetPaneText()函数介绍,可能对状态条上的窗口也要Update,即添加消息映射:
ON_UPDATE_COMMAND_UI ( ID_YOUR_PANE, OnUpdatePane )
和函数:
void CMyClass::OnUpdatePane (CCmdUI *pCmdUI)
{
pCmdUI->Enable();
}
才行

我采用了一个投机取巧的方法,这种不显示好像都只出现在最后一个窗格,所以我在后面有添加了一个小格,算是解决了。

同时还想听听高手们的意见,呵呵,学习学习

16,472

社区成员

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

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

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