Bcgcontrolbar 输出栏(Outputbar)文本显示

效果如下

添加 outputbar.h

outputbar.cpp

outputbar.h改为

//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// This is a sample for BCGControlBar Library Professional Edition
// Copyright (C) 1998-2014 BCGSoft Ltd.
// All rights reserved.
//
// This source code can be used, distributed or modified
// only under terms and conditions
// of the accompanying license agreement.
//*******************************************************************************
//
#if !defined(AFX_OUTPUTBAR_H__708257AC_7B83_11D3_A74B_0090274409AC__INCLUDED_)
#define AFX_OUTPUTBAR_H__708257AC_7B83_11D3_A74B_0090274409AC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// OutputBar.h : header file
//

/////////////////////////////////////////////////////////////////////////////
class COutputBar : public CBCGPDockingControlBar
{
// Construction
public:
    COutputBar();

// Attributes
protected:
    CString    m_strText;
    int        m_nScrollOffset;
    int        m_nTotalTextHeight;

protected:
// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(COutputBar)
    //}}AFX_VIRTUAL

    virtual BOOL ScrollVertAvailable(BOOL bTop);
    virtual void OnScrollClient(UINT uiScrollCode);

// Implementation
public:
    virtual ~COutputBar();

    void UpdateInfo (int nType);
    void UpdateTextHeight();

    // Generated message map functions
protected:
    //{{AFX_MSG(COutputBar)
    afx_msg void OnPaint();
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_OUTPUTBAR_H__708257AC_7B83_11D3_A74B_0090274409AC__INCLUDED_)

outputbar.cpp改为

//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// This is a sample for BCGControlBar Library Professional Edition
// Copyright (C) 1998-2014 BCGSoft Ltd.
// All rights reserved.
//
// This source code can be used, distributed or modified
// only under terms and conditions
// of the accompanying license agreement.
//*******************************************************************************
//
// OutputBar.cpp : implementation file
//

#include "stdafx.h"
#include "BCGControl3.0.h"
#include "MainFrm.h"
#include "OutputBar.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define HORZ_MARGIN    10

/////////////////////////////////////////////////////////////////////////////
// COutputBar

COutputBar::COutputBar()
{
    m_nScrollOffset = 0;
    m_nTotalTextHeight = 0;
}

COutputBar::~COutputBar()
{
}

BEGIN_MESSAGE_MAP(COutputBar, CBCGPDockingControlBar)
    //{{AFX_MSG_MAP(COutputBar)
    ON_WM_PAINT()
    ON_WM_SIZE()
    ON_WM_ERASEBKGND()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

void COutputBar::OnPaint()
{
    CPaintDC dc(this); // device context for painting

    CBCGPMemDC memDC (dc, this);
    CDC* pDC = &memDC.GetDC ();

    CRect rect;
    GetClientRect (rect);

    pDC->FillRect(rect, &globalData.brBarFace);

    CFont* pOldFont = pDC->SelectObject (&globalData.fontRegular);
    pDC->SetTextColor (globalData.clrBarText);
    pDC->SetBkMode (TRANSPARENT);

    rect.DeflateRect (HORZ_MARGIN, 0);

    rect.top -= m_nScrollOffset;

    pDC->DrawText (m_strText, rect, DT_WORDBREAK);
    //pDC->DrawText (_T("1"), rect, DT_WORDBREAK);

    pDC->SelectObject (pOldFont);
}

void COutputBar::UpdateInfo (int nType)
{
    if (GetSafeHwnd () == NULL)
    {
        return;
    }

    m_strText.Empty ();

    switch (nType)
    {
    case 1:
        m_strText = _T("\n这里将显示全部信息回显");

        break;
    }    

    UpdateTextHeight();
    m_nScrollOffset = 0;

    SetWindowPos (NULL, 0, 0, 0, 0,
            SWP_NOZORDER | SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_FRAMECHANGED);

    RedrawWindow (NULL, NULL, RDW_INVALIDATE | RDW_FRAME | RDW_UPDATENOW);
}

void COutputBar::OnSize(UINT nType, int cx, int cy)
{
    UpdateTextHeight();

    if (m_nTotalTextHeight < cy)
    {
        m_nScrollOffset = 0;
    }

    CBCGPDockingControlBar::OnSize(nType, cx, cy);

    RedrawWindow ();
}

void COutputBar::UpdateTextHeight()
{
    CClientDC dc(this);

    CRect rect;
    GetClientRect (rect);

    CFont* pOldFont = dc.SelectObject (&globalData.fontRegular);

    rect.DeflateRect (HORZ_MARGIN, 0);

    dc.DrawText (m_strText, rect, DT_WORDBREAK | DT_CALCRECT);

    dc.SelectObject (pOldFont);

    m_nTotalTextHeight = rect.Height();
}

BOOL COutputBar::OnEraseBkgnd(CDC* /*pDC*/)
{
    return TRUE;
}

BOOL COutputBar::ScrollVertAvailable(BOOL bTop)
{
    if (bTop)
    {
        return m_nScrollOffset > 0;
    }

    CRect rect;
    GetClientRect (rect);

    return m_nTotalTextHeight - m_nScrollOffset > rect.bottom;
}

void COutputBar::OnScrollClient(UINT uiScrollCode)
{
    switch (HIBYTE(uiScrollCode))
    {
    case SB_LINEUP:
        m_nScrollOffset -= globalData.GetTextHeight();
        break;

    case SB_LINEDOWN:
        m_nScrollOffset += globalData.GetTextHeight();
        break;
    }

    RedrawWindow();
}

Mainfrm.h中加入 #include "OutputBar.h"

并添加对象COutputBar m_wndInformationBar;

Mainfrm.cpp中 的Oncreate中加入

    if (!m_wndInformationBar.Create (_T("信息反馈"), this, CRect (0, 0, 100, 100),
        TRUE,
        10086,
        WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI,
#ifdef _BCGSUITE_INC_
        AFX_CBRS_REGULAR_TABS,
        AFX_CBRS_RESIZE | AFX_CBRS_AUTOHIDE)
#else
        CBRS_BCGP_REGULAR_TABS,
        CBRS_BCGP_RESIZE | CBRS_BCGP_AUTOHIDE)
#endif
        )
    {
        TRACE0("Failed to create information bar\n");
        return FALSE;      // fail to create
    }

    m_wndInformationBar.UpdateInfo (1);
    //SetupThemeCombo(1);
    m_wndInformationBar.EnableDocking(CBRS_ALIGN_ANY);
时间: 2024-10-16 07:23:05

Bcgcontrolbar 输出栏(Outputbar)文本显示的相关文章

文本显示为单行,超过部分隐藏并使用省略号

<div> 文本显示为单行,超过部分隐藏并使用省略号 修改 width 属性查看效果.</div> div { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; width:120px;}

css text-overflow溢出文本显示省略号

<div style="width: 100px; overflow: hidden; text-overflow:ellipsis"> <nobr>当对象内文本溢出时显示省略标记</nobr></div> 语法: text-overflow : clip | ellipsis 参数: clip : 不显示省略标记(...),而是简单的裁切 (clip这个参数是不常用的!) ellipsis : 当对象内文本溢出时显示省略标记(...)

超出文本显示省略号

对于大多数刚入门的程序员,都是不是太注重代码的细节,也就是写出来的代码不是太完善.有些我们设置的标签能放下6个字,后期我们又要加多几个字,又不能改变标签的宽度,又要保持外观样式的美观性,那我们怎么办的?下面我就给大家介绍一种超出文本显示用省略号代替的一种方法. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>省略号&

VTK中文文本显示及简单的医学图像浏览软件

用VTK做的一个简单的医学图像浏览软件(在http://blog.csdn.net/www_doling_net/article/details/8668870这篇博文的基础上改的),支持标准的医学图像四视图(横断面.矢状面.冠状面和三维视图),并在每个二维视图上显示对应层数的图像信息. 程序运行截图如下: 可执行文件的下载地址:http://download.csdn.net/detail/www_doling_net/7501129 利用VTK实现中文文本显示的示例程序,可以支持多行文本即"

CSS的color属性并非只能用于文本显示

虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 对于CSS的color属性,相信所有Web开发人员都使用过.如果你并不是一个特别有经验的程序员,我相信你未必知道color属性除了能用在文本显示,还可以用作其它地方. 你可以先看一下下面的演示: HTML代码 <img alt="Example alt text" width="200" height="200

文本显示中的换行和省略号显示问题

在工作中经常会遇到文本显示的一些样式调整,今天就来说说文本显示的几个问题 . 一.强制换行的方法 1 word-break 是css3中的文本属性,规定非中日韩文本的换行规则,规定自动换行的处理方法,通过这个属性,可以让浏览器在特定的位置断行.w3c中有3个取值. word-break: normal|break-all|keep-all;normal是浏览器默认的自动换行的值.break-all 允许在单词内换行.keep-all 只能在半角空格或连字符处换行.但如果想断行的话,一定要设置宽度

新公司入职第一天遇到的 关于 CSS 单行溢出文本显示省略号...的问题

上班第一天 前端岗位,因为公司这个项目是标准开发 所以没法用框架在打架页面,好吧 我手写 各种div 各种css样式 好不忧伤,好吧 不废话了 进入正题. 想在导航栏中的 客户信息 功能点 实现溢出用‘...’来代替, 我一想 这简单啊 只要给div加上text-overflow:ellipsis;属性就好了呗, 结果 怎么调也不行,你说把我压抑的啊 经过一阵查终于找到原因出在哪里里 原来text-overflow:ellipsis;的属性 得需要另外两个属性的配合才能实现 这俩分别是 over

Button 文本显示闪动问题解决

描述:定时器改变 UIButton 文本显示时出现闪动 ! 解决: 方案一:UIButton 的 UIButtonType 类型设置为 UIButtonTypeCustom .PS:使用Xib或SB创建 UIButton 时默认 UIButtonTypeSystem 类型 . 方案二:若  UIButtonType 已经设置 UIButtonTypeSystem 类型 ,titleLabel.text 与 setTitle 同时设置 . - (void)viewDidLoad { [super

css 溢出文本显示省略号

这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网站后台程序截取一定的字符然后输出到前台显示或者前台用javascript截取一定的字符,但 是通过控制字数来截取的话还是存在一个大问题的,因为中文和英文的字符宽度问题,这个字数不好控制,而且通用性较差.那么有没有更好的方法呢,比如直接用 CSS来解决的,当然是有的. text-overflow是一个