nisam bas siguran sta zelis da postignes? dali hoces na napravis celije (kao excel) u koje upisujes text, pa onda iscrtas preko njega neke linije tako da izgleda kao da imas text preko vise celija? takodje nisi rekao dali moras koristiti neku odredjenu biblioteku (npr. WIN API, an MFC)?
mozda ti ovo moze pomoci za pocetak (MFC je u pitanju):
MyBorder.h
Code:
#ifndef __MYBORDER_H__
#define __MYBORDER_H__
class CMyBorder : public CStatic
{
protected:
CClientDC* m_pDC;
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyBorder)
//}}AFX_VIRTUAL
public:
CMyBorder();
virtual ~CMyBorder();
void HalfeIt();
void AttachParent(CWnd*pWnd);
BOOL DrawText(int x, int y, LPCSTR pszText, int nCount);
virtual BOOL DrawCenteredText(LPCSTR pszText);
protected:
int GetTextLength(LPCSTR pszText) const;
protected:
//{{AFX_MSG(CMyBorder)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#endif
MyBorder.cpp
Code:
#include "stdafx.h"
#include "MyBorder.h"
CMyBorder::CMyBorder()
{
m_pDC = NULL;
}
CMyBorder::~CMyBorder()
{
if (m_pDC != NULL)
{
delete m_pDC;
}
}
int CMyBorder::GetTextLength(LPCSTR pszText) const
{
return (pszText != "") ? strlen(pszText) : 0;
}
void CMyBorder::AttachParent(CWnd *pWnd)
{
if (m_pDC == NULL)
{
m_pDC = new CClientDC(this);
}
}
BOOL CMyBorder::DrawText(int x, int y, LPCSTR pszText, int nCount)
{
m_pDC->SetBkColor(RGB(255,0,0));
return m_pDC->TextOut(x, y, pszText, nCount);
}
BOOL CMyBorder::DrawCenteredText(LPCSTR pszText)
{
ASSERT(m_pDC);
BOOL bRetVal = FALSE;
CRect rcThis;
GetClientRect(&rcThis);
TEXTMETRIC tm;
m_pDC->GetTextMetrics(&tm);
int nTextLength = GetTextLength(pszText);
int nTextWidth = tm.tmAveCharWidth * nTextLength;
int nTextHeigth = tm.tmHeight;
int x = ((rcThis.Width() - nTextWidth) >> 1);
int y = ((rcThis.Height() - nTextHeigth) >> 1);
m_pDC->SetBkMode(TRANSPARENT);
HalfeIt();
bRetVal = m_pDC->TextOut(x, y, pszText, nTextLength);
return bRetVal;
}
void CMyBorder::HalfeIt()
{
CRect rcThis;
GetClientRect(&rcThis);
int nWidth = (rcThis.Width() >> 1);
int nHeight = rcThis.Height();
m_pDC->MoveTo(nWidth, 0);
m_pDC->LineTo(nWidth, nHeight);
}
BEGIN_MESSAGE_MAP(CMyBorder, CStatic)
//{{AFX_MSG_MAP(CMyBorder)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
onda dodas jednu STATIC kontrolu u dijalog, i dodas joj promenljivu m_ctrlMyBorder koja je tipa CMyBorder (najlakse sa vizardom) , u OnInitDijalog na kraju f-je dodas
Code:
m_ctrlMyBorder.AttachParent(this);
i napravis f-ju koja se poziva na stisak dugmeta:
Code:
CString str = "Ovo je neki shatro text...";
m_ctrlMyBorder.DrawCenteredText(str);
nadam se da ti je ovo kao neka startna pomoc dovoljno.
pozdrav.