我要在SDI的状态栏上显示自己的内容,请问我该如何操作?
我有这么一段代码:
         char status[100];
sprintf(status,"通过 %s 发送指令 %s",strPort.GetBuffer(50),Data.GetBuffer(50));
::SendMessage(m_hStatusWnd,SB_SETTEXT,0,(LPARAM)status);
这里的这段代码是用在基于对话框的程序上显示自己的内容的m_hStatusWnd=CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER,TEXT("状态栏"),//显示在状态栏上的信息
                                                               m_hWnd, //父窗口句柄
IDS_STATUS); //预定义的资源ID哪位大哥能给我一段用在单文档的?!~~~
最好是完全的,不要光给我一句,不然我可能不会用。
我一直就不知道如何使用SDI的状态栏!万分感谢!

解决方案 »

  1.   


    if (!m_wndStatusBar.Create(this) ||
    !m_wndStatusBar.SetIndicators(indicators,
      sizeof(indicators)/sizeof(UINT)))
    {
    TRACE0("未能创建状态栏\n");
    return -1;      // 未能创建
    } m_wndStatusBar.SetWindowText("abc");
      

  2.   

    用sprintf语法将信息写入状态条
    // StatusBarMessage() - Writes to status bar using sprintf syntax.
    //
    // Author: Keith Rule -- [email protected]
    //
    // Copyright (c) 1995-1996, Keith Rule
    // May be freely used provided this comment
    // is included with the source and all derived
    // versions of this source.
    void StatusBarMessage(char* fmt, ...)
    {
    if (AfxGetApp() != NULL && AfxGetApp()->m_pMainWnd != NULL) {
    char buffer[256];
    CStatusBar* pStatus = (CStatusBar*) 
    AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
    va_list argptr;
    va_start(argptr, fmt);
    vsprintf(buffer, fmt, argptr);
    va_end(argptr);
    if (pStatus != NULL) {
    pStatus->SetPaneText(0, buffer);
    pStatus->UpdateWindow();
    }
    }
    }
      

  3.   

    还是不太会用!我再说明白点!原本程序是一个基于对话框的,我现在将这个对话框放到了我的SDI程序的ControlBar里。
    用途就是通过该对话框上的按钮向串口发送信息!
    下面这个函数就是向串口写信息用的。第一个参数是是要发的指令,第二个是长度。void CMirrorControl::WriteToPort(BYTE* pData, UINT len)
    {
    CString strPort,Data;
    itoa(*pData,Data.GetBuffer(50),2);
    Data.ReleaseBuffer();
    while(Data.GetLength()<8)
    Data.Insert(0,'0');

    sprintf(strPort.GetBuffer(50),"串口%d",m_Port.m_nPortNr);
    strPort.ReleaseBuffer();
    m_Port.WriteToPort(pData,len);
    StatusInfo(strPort,Data);
    // m_nTimer = SetTimer(1, 1000, 0);
    }下面这个函数就是原基于对话框的应用程序用来在状态条显示信息用的!
    void CMirrorControl::StatusInfo(CString strPort, CString Data)
    {
    char status[100];
    sprintf(status,"通过 %s 发送指令 %s",strPort.GetBuffer(50),Data.GetBuffer(50));
    ::SendMessage(m_hStatusWnd,SB_SETTEXT,0,(LPARAM)status);
    }我现在想问的就是如何改写(最好是改后面的这个函数)函数,才能在状态栏上显示发送到串口的数据。sprintf(status,"通过 %s 发送指令 %s",strPort.GetBuffer)
    这条语句就是格式,例如:“通过COM1发送指令01000000”
    麻烦大家帮我再看看,楼上的代码我不太懂!
    不好意思!
      

  4.   

    就是用CStatusBar::SetPaneText把sprinft中的status内容显示在状态栏上
      

  5.   

    有没有能够和我上面的程序完美结合的呀?麻烦帮帮忙我就是不知道如何修改StatusInfo(strPort,Data)来适应SDI程序!谢谢了!