教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

Visual C++第03章 MFC基本应用程序的建立(11)

来源:网络收集 时间:2025-09-14
导读: A、向窗口中添加插入符(一个闪亮的插入符) 插入符出现在文本末尾,指示下一个字符的位置 (1) 建立一个单文档应用程序,名为:处理鼠标 (2) 在Doc.h里加(public):CString str; (3) 在Doc.cpp里的构造函数

A、向窗口中添加插入符(一个闪亮的插入符)

插入符出现在文本末尾,指示下一个字符的位置 (1) 建立一个单文档应用程序,名为:处理鼠标 (2) 在Doc.h里加(public):CString str; (3) 在Doc.cpp里的构造函数里加:str=” “;

(4) 向视图类里加映射消息OnChar()即:WM_CHAR读取键击,并加代

码:

void CMyView::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)

{ CMyDoc *pDoc=GetDocument();//获得文档类指针 ASSERT_VALID(pDoc); //测试文档指针 pDoc->str+=nChar; Invalidate(); }

(5) 在View.h里加:(可在protected下面加)

boolean car; //布尔类型对象(真、假),以了解是否已创建了该插入符。 //boolean变量也称boolean标志,有2个值:真和假。 (6) 在View.cpp的构造函数中将car设为假,car=false; (7) 在View::OnDraw(CDC *pDC) 加代码:

{ if(!car)

{ TEXTMETRIC text; // TEXTMETRIC是一个结构体,为获得插入符

//的大小。

pDC->GetTextMetrics(&text);

CreateSolidCaret(text.tmAveCharWidth/8,text.tmHeight);//创建插入符

//插入符宽度是字符宽度的1/8。

(8) 设置插入符的位置

在View.h的protected下写:CPoint carep;//点坐标对象 在View.cpp的OnDraw()中 (接上) carep.x=carep.y=2;// 将插入符的位置设为2 SetCaretPos(carep);//设置插入符位置 ShowCaret(); //在屏幕上显示插入符 car=true;//将布尔标志设为真 }

pDC->TextOut(2,2,pDoc->str);

}

这时插入符便出现在屏幕上一闪一闪的,你还可以往里敲东西。 (9) 将插入符放在显示文本串的末尾,就必须决定文本串的末尾位置,通过

GetTextExtent()来提供一个名为size的CSize对象来实现。(接上) 在pDC?TextOut(0,0,pDoc?str);//的下面写:

CSize size=pDC->GetTextExtent(pDoc->str);//文本大小

//(为在文本串末尾显示插入符,我们首先使用HideCaret()隐藏它,如果//不隐藏,可能会在屏幕上的老位置留下插入符的映像。) HideCaret();

carep.x=size.cx;//将CPoint的x数据成员设置在屏幕上文本串的末尾。 SetCaretPos(carep);//将插入符移向它的新位置 ShowCaret();//重新显示它 }

运行!见插入符在文本串后。

(10)(当用户单击另一个窗口或别处时,会将焦点移向那个窗口,应该隐藏

这里的插入符),当失去或获得焦点时,隐藏或显示插入符。

1、失去焦点得到:WM_KILLFOCUS消息 获得焦点得到:WM_SETFOCUS 消息

要分别将它加到view视图中去,并加代码: (加映射消息后)

View::OnkillFocus(Cwnd *pNewWnd)//失去焦点 {

HideCaret(); //隐藏焦点

}

View::OnSetFocus(CWnd *pOldWnd)//获得焦点 {

ShowCaret(); //显示焦点 } B、使用鼠标

在用户区的任何位置单击鼠标,就在该位置显示一插入符,并在这个新

位置处绘制文本。(注:再单击另一个位置时,将先前的文本清除掉) 接上:

1、加鼠标左键按下的映射消息WM_LBUTTONDOWN(其它按鼠标发出的消

息,见5.0书102页),并加代码:(鼠标按下,则第一个任务是存储它的位置,我们将在变量x和y中存储该位置,即(x,y),从point对象的x和y成员中获得:

(1)先在View.h里加: int x,y; // 保护或公共里 (2)View::OnLButtonDown(UINT nFlags,CPoint point)

第三章

{ x=point.x; y=point.y;

CMyDoc *pDoc=GetDocument(); ASSERT_VALID(pDoc);

pDoc->str.Empty(); //鼠标到了新的位置,将原来的去掉,置空。 Invalidate(); //强制程序重绘视图 }

(3)在View::OnDraw(CDC *pDC) { ---- ---

以前加的全注释掉

pDC->SetTextColor(m_pColor); if(!car)

{ 以前加的不动 }

pDC->TextOut(2,2,pDoc->str);

CSize size=pDC->GetTextExtent(pDoc->str); HideCare();

//以下加在原程序的下面即可

carep.x=x+size.cx; //以下是将插入符移向文本串的末尾并重新

//显示它

carep.y=y;

SetCaretPos(carep); ShowCaret(); // car=true;

pDC->TextOut(x,y,pDoc->str);

}

结束

…… 此处隐藏:447字,全部文档内容请下载后查看。喜欢就下载吧 ……
Visual C++第03章 MFC基本应用程序的建立(11).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/608642.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)