2000 积文 - 积累系统性知识,积聚技术精华 少走弯路,踏实进步 - 积世界技术网
积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
巧用VC++来实现全屏幕显示功能
error997 (error997)    2014-11-20 20:37:28      目标    课题
   巧用VC++来实现全屏幕显示功能
     一、实现方法 

  实现程序的全屏幕其实很容易,它的实现思路就是:首先要自定义一个窗口类,重载该窗口类的OnPaint()或OnDraw()函数,实现具体的窗口显示功能,然后调用API函数GetDeviceCaps(int nIndex )函数来获取当前显示屏幕的尺寸,如nIndex取LOGPIXELSX值可以得到屏幕的宽度(以像素为单位),取LOGPIXELSY值可以得到屏幕的高度。有了屏幕的尺寸还不够,还必须调用一个API函数MoveWindow()用来定位当前窗口到整个屏幕。需要读者注意的是,为了实现窗口与用户的交互,要在窗口中装载一个光标,另外,为了重全屏幕显示恢复到正常状态,需要在该窗口类中处理WM_KEYDOWN消息,在该消息处理函数中识别是否用户按下了ESC(退出)键,如是,程序恢复到正常显示状态。下面的代码实现了上面所有的功能,并且能够响应鼠标操作,在屏幕上数字曲线。编程步骤如下: 

  1、定义一个窗口类CGribbleWnd,它包含两个整形变量m_pixelsX、m_pixelsY,分别用来存储窗口的尺寸; 

  2、使用CLASSWIZARD重载窗口类的OnPain()函数,实现具体的显示功能; 

  3、使用CLASSWIZARD为窗口类添加WM_CREATE、WM_ERASEBKGND、WM_KEYDOWN、WM_LBUTTONDOWN等消息处理函数,以实现全屏幕窗口和响应用户操作;    

  --  
 
  二、程序代码: 

  ////////////////////////////////////////////CGribbleWnd类的头文件 

  #if !defined(AFX_GRIBBLEWND_H__6E1D4ED1_D9A6_11D4_9B9F_525400DAE6A0__INCLUDED_) 

  #define AFX_GRIBBLEWND_H__6E1D4ED1_D9A6_11D4_9B9F_525400DAE6A0__INCLUDED_ 

  #if _MSC_VER > 1000 

  #pragma once 

  #endif // _MSC_VER > 1000 

  class CGribbleWnd : public CWnd 

  { 

   // Construction 

   public: 

  CGribbleWnd(); 

  // Attributes 

   public: 

  // screen stuff 

  int m_pixelsX;//存放屏幕的宽度; 

  int m_pixelsY;//存放屏幕的高度; 

  CDC* m_pDC;//设备上下文对象; 

  HCURSOR m_hCursor; //光标句柄; 

  COLORREF m_backColor; //颜色对象,用来存放用户自定义的颜色; 

  // Operations 

  // Overrides 

  // ClassWizard generated virtu