代码是这样的:void CMyView::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);
if(nChar==0x0d)//按回车键
{
Write_Str.Empty();
First_Point.y=First_Point.y+tm.tmHeight;//换行
SetCaretPos(First_Point);
}
else if(nChar==0x08)//按删除键
{
COLORREF ref=dc.SetTextColor(dc.GetBkColor());
dc.TextOut(First_Point.x,First_Point.y,Write_Str);//清除原有字幕
Write_Str=Write_Str.Left(Write_Str.GetLength()-1);
dc.SetTextColor(ref);
}
else
{
Write_Str+=nChar;
}
CPoint Caret_Point;
CSize size;
size=dc.GetTextExtent(Write_Str);//每一行文字的长度
Caret_Point.x=First_Point.x+size.cx;
Caret_Point.y=First_Point.y;
SetCaretPos(Caret_Point);//设置插入符的位置
dc.TextOut(First_Point.x,First_Point.y,Write_Str);//输入文本
CView::OnChar(nChar, nRepCnt, nFlags);
}
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if(nChar==0x0d)//按回车键
{
Write_Str.Empty();
First_Point.y=First_Point.y+tm.tmHeight;//换行
SetCaretPos(First_Point);
}
else if(nChar==0x08)//按删除键
{
COLORREF ref=dc.SetTextColor(dc.GetBkColor());
dc.TextOut(First_Point.x,First_Point.y,Write_Str);//清除原有字幕
Write_Str=Write_Str.Left(Write_Str.GetLength()-1);
dc.SetTextColor(ref);
}
else
{
Write_Str+=nChar;
}
CPoint Caret_Point;
CSize size;
size=dc.GetTextExtent(Write_Str);//每一行文字的长度
Caret_Point.x=First_Point.x+size.cx;
Caret_Point.y=First_Point.y;
SetCaretPos(Caret_Point);//设置插入符的位置
dc.TextOut(First_Point.x,First_Point.y,Write_Str);//输入文本
CView::OnChar(nChar, nRepCnt, nFlags);
}
解决方案 »
- vc画线后,鼠标移动到线上,能提示一些信息
- 为什么大家都不把CloseHandle放在线程里面?
- PDID查壳查VC8的程序是Nothing found*
- SNMP到底能检测那些信息?是否只能检测网络信息?能远程通过SNMP协议获取其他的信息吗?例如CPU、硬盘等!
- 请教_RecordsetPtr分页的方法
- IE工具栏上的图标在哪个DLL或文件夹中? 在线等
- 请问有没有满足一下3个条件的split类?
- 一个很奇怪的问题
- 一台普通计算机在正常情况下能长时间运行多久?
- 如何实现实时监测注册表的变化呢???????????
- MFC菜鸟请问,下面是一个网上找的绘图程序,它里面的Draw和OnPaint函数,请问能在这两个函数里面改一下,改成双缓存画图吗?请高手指点。
- com组件带窗口
还有个问题:每进行一次文件输入,它都会调用ondraw函数吗?
知道的朋友,帮我解答写,谢谢。