文章开始之前,推荐一些别人写的很好的文章!感兴趣的也可以去读一下哦!
今日推荐:Shell编程中,当登录服务器时显示“-bash-4.2$”怎么办?
文章链接:https://cloud.tencent.com/developer/article/2465870
某一天登录远程服务器时,突然没有了登录成功的页面,报错有的时候并不复杂,复杂的是基础知识是否掌握,见到的报错是否多样,如果答案是”是“的话,那么深化下去将会变得容易。
VC++6.0入门——第四讲 简单绘图
相信大多数读者都有过使用Word和记事本程序的经验,Word和记事本这类文本处理软件可以让我们输入文字,并对文字进行编辑和修改,本章将介绍与文字处理相关的编程操作。
常用的文本处理程序有Wod、记事本和写字板,我们所使用的VC++集成开发环境也可以看成是一个文本处理程序,在它的源代码编辑窗口中可以输入、编辑和修改代码。不难发现,在这些文本处理程序的编辑窗口中都有一条闪烁的竖线,将之称为插入符(Caet)。插入符可以用于提示用户:你输入的文字信息将在这个插入符所在的位置显示出来。
输入的竖直线,一闪一闪的输入
增加Windows消息处理
int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
// 确定符号大小
CClientDC dc(this); // 当前设备描述表describe
TEXTMETRIC tm;
dc.GetTextMetrics(&tm); // 取地址符
// 创建一个插入符号
CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
ShowCaret(); // 显示出来
return 0;
}
上面创建的是一般文字处理程序所使用的文本插入符,下面将介绍如何创建图形插入符,这可以利用CWnd类的另一个函数:CreateCaret来实现。该函数的声明形式如下所示: void Createcaret(CBitmap*pBitmap )
/////////////////////////////////////////////////////////////////////////////
// CTextView drawing
void CTextView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// CString
CString str("pet");
pDC->TextOut(50,50,str);
}
/////////////////////////////////////////////////////////////////////////////
// CTextView drawing
void CTextView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// CString
CString str("pet");
pDC->TextOut(50,50,str);
// 使用字符串资源
str.LoadString(IDS_PET);
pDC->TextOut(0,200,str);
}
void CTextView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// 移动插入符到这里
SetCaretPos(point);
m_strLine.Empty(); // 将cstring中保存的内容情空
CView::OnLButtonDown(nFlags, point);
}
将文本的颜色设置成和背景色一样
1.鼠标左键定位插入字符位置;
2.特殊字符的处理,回车键,删除键;
3.光标随着输入的字符移动;
void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
// 字体的高度
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
printf("%u\n", nChar);
if(0x0d==nChar) // 输入的是回车
{
m_strLine.Empty(); // 清空
m_ptOrig.y += tm.tmHeight; // 到下一行
}else if(0x08==nChar) // 输入的是删除
{
// 获取背景色,文本颜色设置成背景色
COLORREF clr = dc.SetTextColor(dc.GetBkColor());
// 然后输出
dc.TextOut(m_ptOrig.x,m_ptOrig.y,m_strLine);
// 减少字符,再次输出
m_strLine = m_strLine.Left(m_strLine.GetLength()-1);
dc.SetTextColor(clr);
}else // 输入其他
{
m_strLine += nChar;
}
// 插入符随着输入移动
CSize sz = dc.GetTextExtent(m_strLine);
CPoint pt;
pt.x = m_ptOrig.x + sz.cx;
pt.y = m_ptOrig.y;
SetCaretPos(pt);
dc.TextOut(m_ptOrig.x,m_ptOrig.y,m_strLine);
CView::OnChar(nChar, nRepCnt, nFlags);
}
void CTextView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// 移动插入符到这里
SetCaretPos(point);
m_strLine.Empty(); // 将cstring中保存的内容情空
m_ptOrig = point; // 保存坐标值
CView::OnLButtonDown(nFlags, point);
}
vc++6.0中的字体
Windows系统中的字体
// 定义字体
CFont font;
font.CreatePointFont(300, "华文行楷", NULL);
CFont *pOldFont = dc.SelectObject(&font);
读者平时在唱卡拉OK时,应该注意到歌曲字幕会随着曲调的播放而有一个平滑的变色过程。如何在程序中实现这种效果呢?如果我们先把字符串输出到屏幕上,接着把文本的颜色设置为新的颜色,然后一个字符一个字符地输出显示该字符串,也可以达到一种变色效果,但不能达到平滑的变色效果。为了达到卡拉OK字幕那样平滑的变色效果,我们需要利用CDC类提供的另一个输出文字的函数:DrawText来实现。DrawText函数的作用是在指定的矩形范围内输出文字。
该函数的一种声明形式如下所示:
int DrawText const cString&str,LPRECT lpRect,UINT nFormat )
void CTextView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
// 显示大小按5个像素增加
m_nWidth += 5;
CClientDC dc(this);
// 字体的高度
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CRect rect;
rect.left = 0;
rect.top = 200;
rect.right = m_nWidth;
rect.bottom = rect.top + tm.tmHeight;
// 改变文本颜色
dc.SetTextColor(RGB(255,0,0));
CString str;
str.LoadString(IDS_PET);
dc.DrawText(str,rect,DT_LEFT);
rect.top=150;
rect.bottom = rect.top + tm.tmHeight;
dc.DrawText(str,rect,DT_RIGHT);
// 判断一下,走到哪里了
CSize sz = dc.GetTextExtent(str);
if(m_nWidth>sz.cx)
{
m_nWidth = 0;
dc.SetTextColor(RGB(0,255,0));
dc.TextOut(0,200,str);
}
CView::OnTimer(nIDEvent);
}
VC++6.0入门——第四讲 简单绘图
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。