想要控制状态栏里信息的显示。
使用下面的代码:
CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();
CStatusBar* pStatus = (CStatusBar*)(pMain->GetDescendantWindow(AFX_IDW_STATUS_BAR));
CString fmtString = " [" + ptreeNode->getTitle() + "] 更新完毕";
char* fmt = const_cast<char*>((const char*)fmtString);
if(pStatus!=NULL)
{
pStatus->SetPaneText(0,fmt);
pStatus->UpdateWindow();
}
结果到pStatus->SetPaneText(0,fmt);这一句抛异常。
这段代码在一个新建工程里测试无误。
但是现在做的这个工程在MainFrame里面内嵌了一个Frame,导致状态栏貌似难以控制。
现在想在内嵌的Frame里面创建一个状态栏,请教应该如何做?

解决方案 »

  1.   

    创建状态栏的时候指定其父窗口为内嵌的Frame。你可以把CStatusBar定义为类的成员变量,用该变量来设置文字。
      

  2.   

    呵呵,我新手不好意思,创建状态栏怎么用代码创建啊?不是只用创建一个CStatusBar的变量吧?
      

  3.   

    呵呵,我新手不好意思,创建状态栏怎么用代码创建啊?不是只用创建一个CStatusBar的变量吧?
      

  4.   

    看看MSDN的例子,例如CImage的例子,好多都有怎么用代码加状态栏。
      

  5.   

    不会创建?那你现在的状态栏是怎么来的?
    在框架类里面定义CStatusBar m_StatusBar;
    响应框架的WM_CREATE消息,在CFrameWnd::OnCreate(lpCreateStruct)之后,执行m_StatusBar.Create(this)。
      

  6.   

    我的 项目也碰到了相同的问题。
    最开始只有一个FRAME的时候很正常
    嵌套后就碰到LZ一样的问题了。
    请楼上的说详细。。谢谢。。
      

  7.   

    用MFC向导生成一个单文档的程序,然后看看MainFrm中是如何实现StatusBar的就知道了,在CMainFrame::OnCreate中。