网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
巧用Visual C++编程来实现全屏幕显示功能
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
LE = __FILE__;

  #endif

  CGribbleWnd::CGribbleWnd()//构造函数;

  {

  }

  CGribbleWnd::~CGribbleWnd()//析构函数;

  {

  }

  BEGIN_MESSAGE_MAP(CGribbleWnd, CWnd)

  //{{AFX_MSG_MAP(CGribbleWnd)

  ON_WM_ERASEBKGND()

  ON_WM_CREATE()

  ON_WM_LBUTTONDOWN()

  ON_WM_PAINT()

  ON_WM_KEYDOWN()

  ON_WM_TIMER()

  //}}AFX_MSG_MAP

  END_MESSAGE_MAP()

  BOOL CGribbleWnd::OnEraseBkgnd(CDC* pDC) //重画背景窗口的背景;

  {

   m_backColor = RGB(125,200,125);//自定义颜色;

   //生成一个新的画刷,用自定义的颜色刷新显示区域;

   CBrush cb(m_backColor);

   HBRUSH hOldBrush = (HBRUSH)pDC->SelectObject(cb);

   RECT rect = {0,0,m_pixelsX,m_pixelsY};

   pDC->FillRect(&rect,&cb);

   pDC->SelectObject(hOldBrush);

   cb.DeleteObject();

   return TRUE;

  }

  int CGribbleWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) //创建窗口;

  {

   if (CWnd::OnCreate(lpCreateStruct) == -1)

  return -1;

  // TODO: Add your specialized creation code here

   m_hCursor =LoadCursor(NULL,IDC_ARROW); //装载鼠标,用来与用户交互;

   SetCursor(m_hCursor);//将装载的鼠标附给生成的窗体;

   ShowCursor(true);//显示鼠标;

   m_pDC = GetDC();//得到当前窗体的设备上下文对象;

   

   m_pixelsX = m_pDC->GetDeviceCaps(HORZRES);//获取屏幕的宽度;

   m_pixelsY = m_pDC->GetDeviceCaps(VERTRES);//获取屏幕的高度;

   MoveWindow(0,0,m_pixelsX, m_pixelsY);//将当前窗口全屏幕显示;

   return 0;

  }

  void CGribbleWnd::OnLButtonDown(UINT nFlags, CPoint point) //响应用户的鼠标单击操作;

  {

   Invalidate();//重画窗口;

  }

  void CGribbleWnd::OnPaint() //实现具体的显示效果,本例用来显示数学曲线;

  {

   CPaintDC dc(this); //得到设备上下文对象;

   //下面的代码用来实现显示数学曲线;

   static int s_nLisXCoef = 1;

   static int s_nLisYCoef = 3;

   static int s_nLisYOffset = 44;

   ++s_nLisXCoef;

   ++s_nLisYCoef;

   int x,y;

   for (float t = 0; t < 32767; t+=0.2) {

  x = sin(s_nLisXCoef*t) * m_pixelsX/2 + m_pixelsX/2;

  y = sin(s_nLisYCoef*t+s_nLisYOffset) * m_pixelsY/2 + m_pixelsY/2;

  dc.SetPixel(x, y, RGB(255,80,255));

   }

  }

  //响应用户的按键操作,当用户按下ESC(退出)键后,程序恢复正常显示;

  void CGribbleWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

  {

   if(VK_ESCAPE == nChar)//判断当前按下的键是否为"ESC"

  DestroyWindow();//销毁当前窗体;

  CWnd::OnKeyDown(nChar, nRepCnt, nFlags);

   }

  四、小结

  实现程序全屏幕显示的思路有很多种,例如另外一种可行的思路是:

  1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息、非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状;

  2)通过API函数::GetDesktopWindow()得到桌面窗口,由::GetWindowRect()得到显示器的尺寸;

  3)通过::AdjustWindowRect()来计算当客户区大小为屏幕大小时相应的窗口大小;

  4)通过::SetWindowPlacement()来设置视图窗口和主窗口为客户区大小和屏幕大小的窗口;

  5)处理窗口消息WM_GETMINMAXINFO,使窗口能够顺利的最大、最小化。可以看出,与本文的实现方法比起来,这种方法实现起来十分繁

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号