mfc编程 孙鑫_MFC文本编程——孙鑫第五课
1.創(chuàng)建并顯示插入符
(1)根據(jù)字體的大小繪制插入符“
CClientDC dc(this);
TEXTMETRICA tm;
dc.GetTextMetrics(&tm);
CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);//根據(jù)字體大小創(chuàng)建插入符
ShowCaret();
(2)繪制圖形插入符“
bitmap.LoadBitmap(IDB_BITMAP1);
CreateCaret(&bitmap);
ShowCaret();
3.顯示文本:(OnDraw函數(shù)中)
(1)CString str="各種猥瑣的東西都往東南枝上掛有木有!";
pDC->TextOut(0,0,str);
(2)使用LoadString()加載字符串
在stringTable新建一個(gè)字符串,設(shè)置ID為IDS_Shen,但是筆者在編寫是遇到一個(gè)問題:
error RC2151 : cannot reuse string constants, 61446(0xF006) - "(##########,##########)" already defined. Cannot add 61446(0xF006) - "一未命名文件".
搜索了下,原來是是在發(fā)布的時(shí)候,使用Release版本,Static library編譯時(shí),MFC中afxres.h中61446已竟被使用,出現(xiàn)同一ID被兩次使用。
所以,將自己寫的那段資源ID改成比61446大些問題就解決了。
4.創(chuàng)建路徑層
//路徑層
CSize sz=pDC->GetTextExtent(str);
pDC->BeginPath();
pDC->Rectangle(0,0,sz.cx,sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_AND);//創(chuàng)建剪切區(qū)域,有5中模式
5.輸入文本:
void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
TEXTMETRICA tm;
dc.GetTextMetrics(&tm);
if(0x0d==nChar)//回車鍵
{
M_Str.Empty();
PointPos.y+=tm.tmHeight;
}
else if(0x08==nChar)//退格鍵
{
COLORREF clr=dc.GetTextColor();
dc.SetTextColor(dc.GetBkColor());
//M_Str=M_Str.Left(M_Str.GetLength()-1);
dc.TextOut(PointPos.x,PointPos.y,M_Str);
M_Str=M_Str.Left(M_Str.GetLength()-1);
dc.SetTextColor(clr);
}
else
{
M_Str+=nChar;
}
CSize sz=dc.GetTextExtent(M_Str);
CPoint pt;
pt.x=PointPos.x+sz.cx;
pt.y=PointPos.y;
SetCaretPos(pt);
dc.TextOut(PointPos.x,PointPos.y,M_Str);
CView::OnChar(nChar, nRepCnt, nFlags);
}
總結(jié)
以上是生活随笔為你收集整理的mfc编程 孙鑫_MFC文本编程——孙鑫第五课的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: [渝粤教育] 南京工业职业技术大学 传感
- 下一篇: InDesign 教程:如何在文档中导航
