文本编程

创建文本插入符

 首先创建创建一个单文档的MFC AppWizard(exe)工程,取名为Text。在文本中创建插入符,可以利用CWnd类的CreateSolidCaret()函数来完成。

为CTextView添加WM_CREATE

int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CView::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 // TODO: Add your specialized creation code here

 CClientDC dc(this);
 CBitmap *cb;
 cb->LoadBitmap(IDB_BITMAP1);
 TEXTMETRIC tm;
 dc.GetTextMetrics(&tm);
 //CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
    //ShowCaret();
 CreateCaret(cb);
 ShowCaret();
 return 0;
}

 

  不同的字符在窗口中显示时,其宽度可能是不同的,可以调用GetTextExtent函数来获得某个特定的字符串在窗口的显示时所占据的宽度和高度

 

  在设备描述表中还有一个路径层的概念。在MFC中,创建路径层是利用CDC类提供的BeginPath和EndPath这两个函数来实现的,路径层可以理解成一个

 

  裁剪区域可以理解成一个绘图区域,其大小可以由我们来控制。我们知道对单文档应用程序来说,除了标题栏,菜单啦以外,剩余的就是客户区。通常可以把客户区看做一个很大的裁剪区域,但裁剪区域也可以局限于客户区中一个很小的范围之中。例如,可以限制一个矩形区域作为裁剪区域,把以后的绘图操作仅限在这个矩阵之中

  可以利用SelectClipPath函数来根据当前设置的路径层和设备描述表中已有的裁剪区域按照一种特定的模式进行一个互操作。

BOOL SelectClipPath( int nMode );

参数:
hdc:设备环境句柄。
iMode:定义使用 路径的方法,具取值如下:

 

RGN_AND:新的剪切区包括当前剪切区域与当前路径的一个交集(重叠区域)。
RGN_COPY:新的剪切区域就是当前的路径。
RGN_DIFF:新的剪切区域包含除了当前路径外的当前剪切区域。
RGN_OR:新的剪切区域包含当前剪切区域与当前路径的并集。
RGN_XOR:新的剪切区域包含当前剪切区域与当前路径的并集但不包含重叠的区域。

 

 

void CTextView::OnDraw(CDC* pDC)
{
 CTextDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here
 CString str; 
 
 str="hello world";
 pDC->TextOut(50,50,str);
 CSize sz=pDC->GetTextExtent(str);
 //CBrush brush(RGB(255,0,0));
 //CBrush *pOldBrush=pDC->SelectObject(&brush);
 
 pDC->BeginPath();
 pDC->Rectangle(50,50,50+sz.cx,60+sz.cy);
 pDC->EndPath();
 //pDC->SelectObject(pOldBrush);
 pDC->SelectClipPath(RGN_DIFF);
 for(int i=0;i<300;i+=10)
 {
  pDC->MoveTo(0,i);
  pDC->LineTo(300,i);
  pDC->MoveTo(i,0);
  pDC->LineTo(i,300);

 }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值