a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 121|回复: 0

[C++] 2011年计算机二级C++辅导实例编程(28)

[复制链接]
发表于 2012-7-31 21:56:58 | 显示全部楼层 |阅读模式
  MFC实现全屏功能的代码
* O/ I1 J4 j, S9 W- f1 ?4 g) A  很多的播放器都有快捷键控制窗口以全屏幕的方式显示。给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以工作了。
. B0 \( s- h. _  j  void CFullScreenDlg::FullScreenView(void)1 Q/ a- l( y6 T1 c0 E  j' M9 u# }
  {* ]! n" i# m9 K' T' b
  RECT rectDesktop;
6 q  |* O/ i& Q% }: m  WINDOWPLACEMENT wpNew;
* [* ^6 G9 f7 N" J8 F  if (!IsFullScreen())& r. B: i7 U' t" c! n. K; F
  {+ t5 }9 U3 R2 v, [- ~! @# \
  // We'll need these to restore the original state.
% r) Y9 X6 N) _3 L5 n& f7 e  GetWindowPlacement (&m_wpPrev);
, y5 `1 r( A1 }+ u4 A' [5 j  //Adjust RECT to new size of window' y' t1 V" s  j6 v+ @
  ::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );
% e9 V7 [  n8 v  ::AdjustWindowRectEx(&rectDesktop, GetStyle(), FALSE, GetExStyle());
4 D4 y% X# d- @, Y! a  // Remember this for OnGetMinMaxInfo()8 V* ?5 t7 \( U0 F$ ?/ ?
  m_rcFullScreenRect = rectDesktop;5 w9 B5 r$ ], K2 t
  wpNew = m_wpPrev;
' V% a( t/ u4 V% Z# E3 ^; h! Z  wpNew.showCmd = SW_SHOWNORMAL;& @6 k; C# P0 a" r0 f0 G: l
  wpNew.rcNormalPosition = rectDesktop;. D$ n  |( j+ u7 @1 Y. C
  m_bFullScreen=true;' G: a0 \+ o; y4 \! J* }$ Z
  }$ v8 t' _0 ~" _. ^
  else1 e3 H- K, N  p! X
  {
0 v" i3 Y- w+ ?) j/ V8 r9 d  // 退出全屏幕时恢复到原来的窗口状态
) Y/ o* E* o: a! [0 b: M. t6 t1 h  m_bFullScreen=false;+ S4 _- U' l) J- h) v1 M
  wpNew = m_wpPrev;2 B5 X1 ~0 O  u9 S- W1 S8 @
  }% V' `, ~& {! f
  SetWindowPlacement ( &wpNew );
- }. p" `6 k/ X) L) `0 [  y6 ^  }0 N. X$ _4 `* y6 i* Q$ B
  void CFullScreenDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
$ a* A5 _! q0 I6 F  {
" l( S: v4 t  ]2 o. W7 l7 q3 r5 @  // TODO: Add your message handler code here and/or call default5 q: v7 Z& l! y
  if (IsFullScreen())
4 \: h' }; _1 \1 o% H7 ^+ S0 `  {1 n4 V. z. Q4 `( `5 V$ P
  lpMMI->ptMaxSize.y = m_rcFullScreenRect.Height();, g9 i* U' X4 w; E" w# s& M( k
  lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;, x: B  p9 c- I# j& c+ B
  lpMMI->ptMaxSize.x = m_rcFullScreenRect.Width();) G8 C. f* z& t. x1 K
  lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;% S; k9 ?4 U# n0 T  J
  }  b) k/ h% n6 B: w) n
  CDialog::OnGetMinMaxInfo(lpMMI);
7 z  K. E1 Q- z* c1 P# F  U  }/ }. P# M  u) Q1 R6 ]& ^/ e
  bool CFullScreenDlg::IsFullScreen(void)$ `5 M4 v* d; }; H
  {
; h- Y& y$ e" i( _$ {  // 记录窗口当前是否处于全屏状态
; n- }2 Q2 y1 ]  return m_bFullScreen;
: S( f$ F7 u0 |3 _  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 18:47 , Processed in 0.172779 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表