Visual C++程序的建立6Word下载.docx

上传人:b****5 文档编号:16451071 上传时间:2022-11-23 格式:DOCX 页数:10 大小:258.09KB
下载 相关 举报
Visual C++程序的建立6Word下载.docx_第1页
第1页 / 共10页
Visual C++程序的建立6Word下载.docx_第2页
第2页 / 共10页
Visual C++程序的建立6Word下载.docx_第3页
第3页 / 共10页
Visual C++程序的建立6Word下载.docx_第4页
第4页 / 共10页
Visual C++程序的建立6Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Visual C++程序的建立6Word下载.docx

《Visual C++程序的建立6Word下载.docx》由会员分享,可在线阅读,更多相关《Visual C++程序的建立6Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

Visual C++程序的建立6Word下载.docx

OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)

   { CMyDoc*pDoc=GetDocument();

//获取文档类首地址指针

   ASSERT_VALID(pDoc);

      //测试指针

   pDoc->

str+=nChar;

           //读取键击

   Invalidate();

                //重绘视图,强制绘图

   }

(4)显示文本

 Invalidate()函数通过调用OnDraw()函数,强制程序重绘视图,故在View.cpp里加:

 CMyView:

:

OnDraw(CDC*pDC)

{——-

 pDC->

TextOut(20,20,pDoc->

str);

//在文档窗口的x=20,y=20处显示敲入的信息

}

 

  (5)编译运行,键盘输入字符,便在窗口上显示出来。

  说 明:

  1、pDoc->

 相当于pDoc->

str=pDoc->

str+nChar;

  2、Draw函数是视图显示函数

  (5)将文本居中

  CWnd派生出CView,再由CView派生出CCenteredView类,该类使文本居中。

可使用CWnd的GetWindowRect()函数,得到客户区的尺寸。

  CRect类用于容纳矩形的尺寸和大小,我们把CRect对象的指针传递到GetWindowRect()

  函数,来获得视图的尺寸。

在OnDraw()函数里加下列代码:

 voidCMyView:

OnDraw(CDC*pDC)

{ CMyDoc*pDoc=GetDocument();

 ASSERT_VALID(pDoc);

 //pDC->

//此条语句是前面加的

  CRect rect;

  //CRect类用于容纳矩形的尺寸和大小

  GetWindowRect(&

rect);

//得到客户区的尺寸

  intx=rect.Width()/2;

   //确定中心坐标x,y

  inty=rect.Height()/2;

  CSizesize=pDC->

GetTextExtent(pDoc->

//查明显示的文本串尺寸

   x-=size.cx/2;

   y-=size.cy/2;

   pDC->

TextOut(x,y,pDoc->

 }

  (6)编译运行,键盘输入字符,便在窗口中间显示出来,如图1所示。

  使用CDC类(设备环境类)的GetTextExtent()函数来决定文本串将显示在客户区的尺寸。

CSize类有2个重要的成员,cx和cy用于保留文本串的尺寸。

  x,y表示窗口新的左上角坐标cx,cy表示窗口新的宽度和高度RECT结构:

 typedefstructtayRECT

{ LONG left;

//左上角x坐标                 

  LONG top;

 //左上角y坐标

  LONG right;

//右下角x坐标

  LONG bottom;

//右下角y坐标

}RECT;

  //CRect类用于容纳矩形的尺寸和大小

SIZE结构:

//窗口大小

 typedefstructtagSIZE

{ intcx;

 //当一个函数返回时的x范围

  intcy;

 //当一个函数返回时的y范围

}SIZE;

  注 意:

如果要显示带颜色的字,你做如下工作:

 //定义颜色变量

在View.h的public里写:

COLORREFm_pColor;

在View.cpp的构造函数里写:

m_pColor=RGB(255,0,0);

//红色

在刚加进去的pDC->

语句的前面加:

//显示红色的字体

pDC->

SetTextColor(m_pColor);

  前面介绍了读取键盘的键击的编程过程,实际上,在我们创建单文档(或双文档)应用程序时,到第6步(最后一步)停住,在这个界面的最下方Baseclass处下拉,找到CEditView置好,再点Finish之后运行,在程序的文档窗口上,直接就能读取来自键盘的键击。

  练习题2 向窗口中添加一个闪亮的插入符,插入符出现在文本末尾,指示下一个字符的位置;

  当用户单击另一个窗口或别处时,会将焦点移向那个窗口,隐藏插入符,当鼠标回到本窗口

  单击时,又获得焦点,显示插入符。

  

(1)建立一个单文档应用程序,名为:

插入符

  

(2)在文档类CMyDoc.h里加(public下面):

CStringstr;

  (3)在文档类CMyDoc.cpp里的构造函数里加:

str=“”;

 //置空

  (4)向视图类CMyView里加映射消息OnChar()即:

WM_CHAR读取键击,并加代码:

OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)

 {  CMyDoc*pDoc=GetDocument();

//获得文档类指针

  ASSERT_VALID(pDoc);

   //测试文档指针

 pDoc->

str+=nChar;

 Invalidate();

 }

  (5)在视图类CMyView.h里加:

(可在protected下面加)

  //布尔类型对象,以了解是否已创建了该插入符,boolean变量也称boolean标志,有2个值:

真和假。

  boolean car;

  (6)在视图类CMyView.cpp的构造函数中将car设为假:

car=false;

  (7)在视图类CMyvoidCMyView:

OnDraw(CDC*pDC)加代码:

 { …………….

if(!

car)

 {

 TEXTMETRICtext;

//TEXTMETRIC是一个结构体,为获得插入符//的大小。

  pDC->

GetTextMetrics(&

text);

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

 CreateSolidCaret(text.tmAveCharWidth/8,text.tmHeight);

  (8)设置插入符的位置

 在视图类CMyView.h的protected下写:

CPoint carep;

  //点坐标对象

  在视图类CMyView.cpp的OnDraw()中原有代码下添加:

 carep.x=carep.y=4;

  //将插入符的位置设为4

 SetCaretPos(carep);

 //设置插入符位置

 ShowCaret();

      //在屏幕上显示插入符

 car=true;

         //将布尔标志设为真

      pDC->

TextOut(0,4,pDoc->

  这时插入符便出现在屏幕上一闪一闪的,你还可以往里敲东西,但插入符不动。

  (9)将插入符放在显示文本串的末尾,就必须决定文本串的末尾位置,通过GetTextExtent()来提供一个名为size的CSize对象来实现。

  接着在函数OnDraw()中刚加入的代码pDCTextOut(0,4,pDocstr);

的下面写:

str);

 //文本大小

  //下面是在文本串末尾显示插入符,我们首先使用HideCaret()隐藏它,如果不隐藏,可能会在屏幕

  //上的老位置留下插入符的映像。

接着在CSizesize=pDC->

下面写:

  HideCaret();

  carep.x=size.cx;

//将CPoint的x数据成员设置在屏幕上文本串的末尾。

  SetCaretPos(carep);

//将插入符移向它的新位置

  ShowCaret();

//重新显示它

  (10)运行!

见插入符跟在文本串的后面。

  (11)当用户单击另一个窗口或别处时,会将焦点移向那个窗口,应该隐藏这里的插入符,当失去或获得焦点时,隐藏或显示插入符。

  1)失去焦点得到:

WM_KILLFOCUS消息

 2)获得焦点得到:

WM_SETFOCUS 消息

  将这2个消息分别加到CMyview视图类中去,并加代码:

OnkillFocus(Cwnd*pNewWnd)//失去焦点

     { HideCaret();

 //隐藏焦点

      }

  CMyView:

OnSetFocus(CWnd*pOldWnd)//获得焦点

     {ShowCaret();

 //显示焦点

  这时运行,见窗口中有插入符,但把鼠标移到窗口外面单击,插入符就没了,而再把鼠标移回窗口单击,插入符又出现了。

  (12)使用鼠标

  在用户区任何位置单击鼠标,就在该位置显示一插入符,并在这个新位置处绘制文本。

  注:

再单击另一个位置时,将先前的文本清除掉,

  1)加鼠标左键按下的映射消息WM_LBUTTONDOWN(鼠标按下,则第一个任务是存储它的位置,我们将在变量x和y中存储该位置,即(x,y),从point对象的x和y成员中获得),并加下列代码:

 View:

OnLButtonDown(UINTnFlags,CPointpoint)

{x=point.x;

 y=point.y;

 CMyDoc*pDoc=GetDocument();

 //鼠标到了新的位置,将原来的去掉,置空。

str.Empty();

 //强制程序重绘视图

  2)在视图类CMyView.h的保护或公共类型下加:

  intx,y;

  COLORREFm_pColor;

     //定义颜色变量

  在视图类的执行文件CMyView.cpp的构造函数中加:

  m_pColor=RGB(255,0,0);

  3)在视图类的执行文件CMyView.cpp的OnDraw函数中加下列代码:

 { —-

//以下是将插入符移向文本串的末尾并重新显示它

   carep.x=x+size.cx;

   carep.y=y;

   SetCaretPos(carep);

                          

   pDC->

  (13)编译运行,结果见图2、图3所示。

如果不想显示2行字符,可将OnDraw函数中前步写入的pDC->

TextOut(0,4,pDoc->

注释掉。

  练习题3

  制作一个每次单击窗口都出现不同鼠标光标图形(6个不同鼠标图形),而当鼠标移出窗口范围时,又变回了原来的图形,使新加入的鼠标光标移不出窗口范围的应用程序。

  1、创建一个单文档的应用程序,名为:

鼠标范围

  2、分别向视图类CMyView添加鼠标左键按下、抬起和鼠标移动的消息映射。

如图3所示。

  3、向资源编辑器中添加6个光标资源。

  Insert->

Resource->

选中Cursor->

单击Import->

在C盘上搜寻到6个.cur图形(光标资源),粘贴到某个文件夹中,同时添加到ImportResource对话框的“文件名(N)”处->

再点击Import就将这6个光标资源添加到了本项目的资源编辑器中了。

  4、在视图类的头文件CMyView.h的public下加成员变量及函数:

 HCURSORm_hCursor;

//用于存放光标句柄

 intm_hClick;

  voidLoadCur(UINTCurName);

//用于获得要显示鼠标句柄

  voidGetCur(intID_NO);

//用于得到将要显示鼠标的ID

  5、在视图类的执行文件CMyView.cpp中完成自定义的函数功能(全用手写)。

LoadCur(UINTCurName)

 {m_hCursor=AfxGetApp()->

LoadCursor(CurName);

voidCMyView:

GetCur(intID_NO)

{ if(m_hClick>

6)

 m_hClick=1;

 switch(m_hClick)

 {case1:

LoadCur(IDC_CURSOR1);

break;

     case2:

LoadCur(IDC_CURSOR2);

     case3:

LoadCur(IDC_CURSOR3);

  case4:

LoadCur(IDC_CURSOR4);

  case5:

LoadCur(IDC_CURSOR5);

  case6:

LoadCur(IDC_CURSOR6);

  6、完成鼠标放下、鼠标移动、鼠标抬起消息映射函数的实现功能

OnLButtonDown(UINTnFlags,CPointpoint)//鼠标按下

{++m_hClick;

   GetCur(m_hClick);

 SetCursor(m_hCursor);

   RECTrect;

   GetClientRect(&

   ClientToScreen(&

   ClipCursor(&

OnLButtonUp(UINTnFlags,CPointpoint)//鼠标抬起

{  ClipCursor(NULL);

OnMouseMove(UINTnFlags,CPointpoint)//鼠标移动

{  SetCursor(m_hCursor);

 CView:

OnMouseMove(nFlags,point);

7、在视图类的执行文件CMyView.cpp的构造函数中,加代码:

CMyView:

CMyView()

{m_hClick=0;

 //初始化m_hClick变量

  8、编译运行,用鼠标一次一次的单击窗口,将一次一次的出现以上加入的6个不同的光标图形,而将其移到窗口外边时,它又变回了原来的图形,新加入的光标移不出窗口。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1