VC++MFC编程2.ppt_第1页
VC++MFC编程2.ppt_第2页
VC++MFC编程2.ppt_第3页
VC++MFC编程2.ppt_第4页
VC++MFC编程2.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC+MFC编程(2),文本显示,Windows可以显示很多数据,包括在窗口中显示文本信息。由于文本是以图像的形式显示在窗口中的,因此需要处理设备描述表(DC),另外还需要对文本字体的处理,包括:文本的显示、文本的颜色、字符的间距和文本的对齐方式等。,(1)文本显示 在拥有一个设备描述表以后,就可以调用TextOut()函数来显示文本行。例如: pDC-TextOut(20,20,This is a line of text.); TextOut()函数的三个参数分别是输出文本的X坐标和Y坐标以及输出文本串。,(2)设置文本颜色 在默认情况下,Windows绘制黑色文本。可以通过SetText

2、Color()函数改变文本的颜色。例如: CDC *pDC=GetDC(); /声明一个设备描述表pDC pDC-SetTextColor(RGB(0,255, 0); /设置文本颜色为绿色 可以通过GetTextColor()函数检索到当前文本的颜色,例如: COLORREF color=pDC-GetTextColor(); SetBkColor()和GetBkColor()函数用于设置背景颜色和获取当前的背景颜色。,(2)设置字符间距 SetTextCharacterExtra()函数用来设置文本字符的间距,GetTextCharacterExtra()用来获得当前文本字符的间距,函数说

3、明如下: pDC- SetTextCharacterExtra(space); int space=pDC- GetTextCharacterExtra(); 其中,space表示在文本字符之间使用的额外空间的像素数。,(3)设置文本的对齐方式 SetTextAlign()函数用于设置显示文本的对齐方式,函数说明如下: pDC-SetTextAlign(alignment); 其中,alignment参数取值:TA_LEFT、TA_CENTER和TA_RIGHT,分别表示左对齐、居中方法和右对齐。Alignment参数取值:TA_TOP、TA_BOTTOM和TA_BASELINE分别表示文本在

4、垂直方向的对齐方式,上对齐、下对齐和字符的基线对齐。,鼠标编程,在图形操作系统中,鼠标是最重要的输入设备之一。Windows系统为用户提供了统一的鼠标编程接口,而不必过多了解其底层的知识。Windows是基于消息传递、事件驱动的操作系统,当用户移动鼠标、按下或释放鼠标键时都会产生鼠标消息。应用程序可以接收10种鼠标消息,下表列出了这些鼠标消息和它们的描述。,鼠标消息处理 MFC把鼠标消息处理函数封装在CView类中,它们分别是: OnMouseMove(UINT nFlags, CPoint point); OnLButtonDblclk(UINT nFlags, CPoint point);

5、 OnLButtonDown(UINT nFlags, CPoint point); OnLButtonUp(UINT nFlags, CPoint point);,分别对应上表中10个鼠标消息。在鼠标处理函数中,point参数代表鼠标热点处的坐标位置,point.x为横坐标,point.y为纵坐标。默认坐标原点(0,0)位于窗口的左上角。,nFlags参数中包含了鼠标按钮和键盘组合使用标志,用来描述鼠标按钮和键盘上的Shift键和Ctrl键的组合状态。nFlag参数取值范围: MK_LBUTTON:鼠标左键被按下; MK_RBUTTON:鼠标右键被按下; MK_MBUTTON:鼠标中键被按下

6、; MK_SHIFT:键盘上的Shift键被按下; MK_CONTROL:键盘上的Ctrl键被按下; 如果想知道某个键是否被按下,可用对应的位屏蔽值与nFlags参数作按位逻辑“与”运算,所的结果若为非零值,则表示该按钮被按下,例如: if (nFlags 如何区分两次单击和一次双击,这取决于两次按下按钮之间的时间间隔,只有当时间间隔小于一定值时才被认为是一次双击。Windows默认的时间为500ms。可以用SetDoubleClickTime()函数来重新设置时间间隔值。,捕捉鼠标,在交互式图形程序设计中,经常要使用鼠标的位置拾取、拖动或拖放,这些动作必须进行鼠标的捕捉。 鼠标捕捉只需要调用

7、CWnd:SetCapture()函数。用户完成鼠标捕捉工作后一般是响应一个鼠标按下信息,要释放鼠标捕捉则是调用CWnd:ReleaseCapture()函数。释放被捕捉鼠标的最好时间是在响应鼠标弹起的时候(WM_LBUTTON)。,鼠标编程综合示例,示例1:在窗口中以文本的形式给出鼠标的状态,即当鼠标移动时,给出鼠标的位置;当鼠标按下鼠标左、右键时显示出鼠标按键状态。例如,当鼠标左键按下时,显示“LBUTTON DOWN!”。,第一步:建立一个myMouse工程文件; 第二步:添加鼠标事件处理函数 鼠标右击视图类(如CmyMouseView),选择“add windows message h

8、andler”,弹出事件处理函数列表窗口,如图所示,从左边事件消息列表中选择“WM_LBUTTONDOWN”,然后单击“Add and Edit”按钮,即加入鼠标左键按下事件函数,并要求编辑事件处理程序。,第四步:重复第二步和第三步,分别添加WM_LBUTTONUP,WM_MOUSEMOVE,WM_RBUTTONDOWN,WM_RBUTTONUP,WM_LBUTTONDBCLK, WM_RBUTTONDBCLK鼠标事件,并输入以下程序:,void CMouseView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message

9、 handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,40,LButton UP!); CView:OnLButtonUp(nFlags, point); void CMouseView:OnRButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,60,RButton Down!); CView

10、:OnRButtonDown(nFlags, point); void CMouseView:OnRButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,40,RButton UP!); CView:OnRButtonUp(nFlags, point); ,void CMouseView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add

11、 your message handler code here and/or call default CDC *pDC=GetDC(); char tbuf80; sprintf(tbuf,Position:(%3d,%3d),point.x,point.y); / 输出鼠标当前位置 pDC-TextOut(20,20,tbuf); CView:OnMouseMove(nFlags, point); void CMouseView:OnLButtonDblClk(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,80,LButton is double clicked!); CView:OnLButtonDblClk(nFlags, point); void CMouseView:OnRButtonDblClk(UINT nFlags, CPoint point) /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论