工控编程吧

标题: 上位机MFC界面全屏再留个洞 [打印本页]

作者: qq263946146    时间: 2019-9-6 09:39
标题: 上位机MFC界面全屏再留个洞
界面全屏显示比较好实现,但留下一个洞,还是很好玩的。
这里实现这个功能。
关键代码如下
  1. //隐藏WINDOWS系统任务栏
  2.         ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);

  3.         char m_pAppRootPath[256]={0};
  4.         ::GetModuleFileName(NULL,m_pAppRootPath,MAX_PATH);
  5.         (_tcsrchr(m_pAppRootPath, _T('\\')))[1] = 0;//删除文件名,只获得路径

  6.         CString str;
  7.         str=m_pAppRootPath;
  8.         str+="\\Show91Mobile.bmp";
  9.        
  10.         HBITMAP m_hbitmap = (HBITMAP)::LoadImage(GetModuleHandle(NULL),str,
  11.                 IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_DEFAULTCOLOR);
  12.         m_Picture.SetBitmap(m_hbitmap);
  13.         CRect rect;
  14.         m_Picture.GetWindowRect(rect);
  15.         //m_Picture.set
  16.         CRect m_rect;
  17.        
  18.         GetWindowRect(m_rect);
  19.        
  20.         CRect desktoprect;
  21.         GetDesktopWindow()->GetWindowRect(&desktoprect);
  22.         int x=0;
  23.         int y=0;
  24.        
  25.         x=desktoprect.Width();
  26.         y=desktoprect.Height();
  27.        
  28.         MoveWindow(CRect(0,0,x,y));
  29.         ShowWindow(TRUE);
  30.         //CenterWindow();
  31.        
  32.         //-----------
  33.         CRect rect1;
  34.         GetWindowRect(rect1);
  35.        
  36.         CRect rect2;
  37.         GetClientRect(rect2);
  38.         ClientToScreen(rect2);
  39.        
  40.         CRgn rgn1;
  41.         rgn1.CreateRectRgn(0, 0, x, y);
  42.        
  43.         int nwidth=480;//洞宽
  44.         int nhight=768;//洞高
  45.        
  46.         CRgn rgn2;        //洞开在屏中间部份
  47.         rgn2.CreateRectRgn((x-nwidth)/2, (y-nhight)/2, (x-nwidth)/2+nwidth, (y-nhight)/2+nhight);
  48.        
  49.         CRgn rgn;
  50.         rgn.CreateRectRgn(0, 0, 1, 1);
  51.        
  52.         rgn.CombineRgn(&rgn1, &rgn2, RGN_DIFF);
  53.        
  54.         //设置窗口区域
  55.         SetWindowRgn((HRGN)rgn,TRUE);
  56.         ModifyStyleEx (WS_EX_APPWINDOW,WS_EX_TOOLWINDOW|WS_EX_TOPMOST );
  57.        
  58.         const CWnd * pWndInsertAfter;
  59.         pWndInsertAfter = &wndTopMost;
  60.         SetWindowPos(pWndInsertAfter,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
复制代码







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4