📄 01_9_13_4.asp.html
字号:
<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<TITLE>计算机世界网-在VC++6.0开发中实现全屏显示</TITLE></HEAD>
<style>
.a14{font-size:14px;text-indent:25px;line-height:20px}
.f{font-size:18px;color=#0f3ccd}
img{border:0px;}
td,p,input{font-fammily:verdana,宋体;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<center>
<BODY topmargin=2 leftmargin=0>
<style>
.v12{font-size:10pt;color:"#ffffff";FONT-WEIGHT: bold}
.v14{font-size:14px;text-indent:25px;line-height:20px}
img{border:0px;}
td,p,input,select{font-fammily:verdana,宋体;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<style>
.v13{font-size:10pt;color:"#ffffff";FONT-WEIGHT: bold}
.v12{font-size:13px;color:"#4C029C";FONT-WEIGHT: bold}
.v14{font-size:14px;text-indent:25px;line-height:20px}
img{border:0px;}
td,p,input,select{font-fammily:verdana,宋体;font-size:12px;}
A:link {text-decoration:none;color:black}
A:visited {text-decoration:none;color:#80006f}
A:hover {text-decoration:underline;color:black}
</style>
<!--头-->
<table align=center cellpadding="0" cellspacing="0" border="0" width="767">
<tr><td valign=bottom>
<table cellpadding="0" cellspacing="0" border=0>
<tr><td valign=top><img src="../../../../../center/image/ccwlogo.gif"></td></tr>
<tr><td height="27" valign=top><img src="../../../../../center/image/knowledge.gif" width="207" height="27"></td></tr>
</table></td>
<td valign=bottom width=556 bgcolor="#4c029c" height=96>
<table cellpadding="0" cellspacing="0" border=0 width=556 bgcolor="#4c029c" height=96>
<tr><td height=25 valign=bottom bgcolor="#ffffff" colspan=2 ><img src="../../../../../image2002/top.gif" usemap="#F"></td></tr>
<tr valign=middle >
<td align=center valign=middle height="60" align=center>
<!-- <a href="http://www.ccw.com.cn/search/" target=_blank><img src="../../../../../img2/esearch.GIF" border=0 width=468 height=60></a> --><a href="http://www.ccw.com.cn/html/search/thememail/" target=_blank><img src="../../../../../img2/topbanner_thememail.GIF" border=0 width=468 height=60></a>
</td>
<td align=center width=15%>
<table width=95%>
<tr><td><a href="mailto:center@ccw.com.cn?subject=我要投稿:" target=_blank><font class=v13>我要投稿</a><br><a href="mailto:center@ccw.com.cn?subject=编读往来"><font class=v13>编读往来</a><br><a href="javascript:AddBookMark('计算机世界网首页')"><font class=v13>加入收藏</a></font></td></tr>
</table>
</td>
</tr>
<tr><td bgcolor="#ffffff" height=1 colspan=2 ></td></tr>
<tr><td bgcolor="#b4aafc" height=2 colspan=2 ></td></tr></table>
<map name="F">
<area href="http://www.ccw.com.cn/" shape="rect" coords="29, 3, 61, 18" target=_blank>
<area href="http://www.ccw.com.cn/news1/" shape="rect" coords="72, 3, 143, 18" target=_blank>
<area href="http://www.ccw.com.cn/center/" shape="rect" coords="155, 2, 216, 18" target=_blank>
<area href="http://www.ccw.com.cn/work/" shape="rect" coords="225, 2, 299, 18" target=_blank>
<area href="http://www.ccw.com.cn/search/" shape="rect" coords="310, 3, 364, 19" target=_blank>
<area href="http://www3.ccw.com.cn/" shape="rect" coords="372, 2, 412, 19" target=_blank>
<area href="http://www2.ccw.com.cn/" shape="rect" coords="424, 2, 550, 18" target=_blank></map>
</td></tr>
<tr><td colspan=2 bgcolor="#b4aafc">
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr>
<td width=26% align=center><font class=v12>【2003年6月24日】 </font></td>
<td CLASS=V12> <a href="http://www.ccw.com.cn/center/topic.asp">专 题</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/tech.asp">技 术</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prod.asp">产 品</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/app.asp">应 用</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/net.asp">网 络</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/prog.asp">编 程</a> /</td>
<td CLASS=V12><a href="http://www.ccw.com.cn/center/skill.asp">技 巧</a> </td>
</tr>
</table>
</td></tr>
</table>
<table align=center width=728>
<tr><td align=center><br><h2><font color='#0f3ccd'>在VC++6.0开发中实现全屏显示</font></h2>
<br><b>广东 粟利民 孙强</b>
</td></tr><tr><td align=right>01-9-13 下午 01:57:02<br><hr size=1 width=718 color=#f46240></td></tr></table><br>
<table align=center width=728><tr><td valign=top width=600>
<table width=100% ><tr><td class=a14>全屏显示是一些应用软件程序必不可少的功能。比如在用VC++编辑工程源文件或编辑对话框等资源时,选择菜单“View\Full Screen”,即可进入全屏显示状态,按“Esc”键后会退出全屏显示状态。</td></tr></table><table width=100% ><tr><td class=a14>
在VC++6.0中我们用AppWizard按默认方式生成单文档界面的应用程序框架。下面将先讨论点击菜单项“View\Full Screen”实现全屏显示的方法,再讲述按“Esc”键后如何退出全屏显示状态。</td></tr></table><table width=100% ><tr><td class=a14>
1) 在CMainFrame类中,增加如下三个成员变量。</td></tr></table><table width=100% ><tr><td class=a14>
class CMainFrame : public CFrameWnd</td></tr></table><table width=100% ><tr><td class=a14>
{ private: //自己添加的三个成员变量</td></tr></table><table width=100% ><tr><td class=a14>
WINDOWPLACEMENT m_OldWndPlacement; //用来保存原窗口位置</td></tr></table><table width=100% ><tr><td class=a14>
BOOL m_bFullScreen; //全屏显示标志</td></tr></table><table width=100% ><tr><td class=a14>
CRect m_FullScreenRect; //表示全屏显示时的窗口位置</td></tr></table><table width=100% ><tr><td class=a14>
protected: CMainFrame();</td></tr></table><table width=100% ><tr><td class=a14>
DECLARE_DYNCREATE(CMainFrame)}</td></tr></table><table width=100% ><tr><td class=a14>
2)在资源编辑器中编辑菜单IDR_MAINFRAME。在“View”菜单栏下添加菜单项“Full Screen”。在其属性框中,ID设置为ID_FULL_SCREEN,Caption为“Full Screen”。还可以在工具栏中添加新的工具图标,并使之与菜单项“Full Screen”相关联,即将其ID值也设置为ID_FULL_SCREEN。</td></tr></table><table width=100% ><tr><td class=a14>
3)设计全屏显示处理函数,在CMainFrame类增加上述菜单项ID_FULL_SCREEN消息的响应函数。响应函数如下:</td></tr></table><table width=100% ><tr><td class=a14>
void CMainFrame::OnFullScreen() </td></tr></table><table width=100% ><tr><td class=a14>
{GetWindowPlacement(&m_OldWndPlacement);</td></tr></table><table width=100% ><tr><td class=a14>
CRect WindowRect;</td></tr></table><table width=100% ><tr><td class=a14>
GetWindowRect(&WindowRect);</td></tr></table><table width=100% ><tr><td class=a14>
CRect ClientRect;</td></tr></table><table width=100% ><tr><td class=a14>
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect);</td></tr></table><table width=100% ><tr><td class=a14>
ClientToScreen(&ClientRect);</td></tr></table><table width=100% ><tr><td class=a14>
// 获取屏幕的分辨率</td></tr></table><table width=100% ><tr><td class=a14>
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);</td></tr></table><table width=100% ><tr><td class=a14>
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);</td></tr></table><table width=100% ><tr><td class=a14>
// 将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 客户区位置间的差值, 就得到全屏显示的窗口位置</td></tr></table><table width=100% ><tr><td class=a14>
m_FullScreenRect.left=WindowRect.left-ClientRect.left;</td></tr></table><table width=100% ><tr><td class=a14>
m_FullScreenRect.top=WindowRect.top-ClientRect.top;</td></tr></table><table width=100% ><tr><td class=a14>
m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;</td></tr></table><table width=100% ><tr><td class=a14>
m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;</td></tr></table><table width=100% ><tr><td class=a14>
m_bFullScreen=TRUE; // 设置全屏显示标志为 TRUE</td></tr></table><table width=100% ><tr><td class=a14>
// 进入全屏显示状态</td></tr></table><table width=100% ><tr><td class=a14>
WINDOWPLACEMENT wndpl;</td></tr></table><table width=100% ><tr><td class=a14>
wndpl.length=sizeof(WINDOWPLACEMENT);</td></tr></table><table width=100% ><tr><td class=a14>
wndpl.flags=0;</td></tr></table><table width=100% ><tr><td class=a14>
wndpl.showCmd=SW_SHOWNORMAL;</td></tr></table><table width=100% ><tr><td class=a14>
wndpl.rcNormalPosition=m_FullScreenRect;</td></tr></table><table width=100% ><tr><td class=a14>
SetWindowPlacement(&wndpl);}</td></tr></table><table width=100% ><tr><td class=a14>
4)重载CMainFrame类的OnGetMinMaxInfo函数,在全屏显示时提供全屏显示的位置信息。</td></tr></table><table width=100% ><tr><td class=a14>
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) </td></tr></table><table width=100% ><tr><td class=a14>
{if(m_bFullScreen)</td></tr></table><table width=100% ><tr><td class=a14>
{lpMMI->ptMaxSize.x=m_FullScreenRect.Width();</td></tr></table><table width=100% ><tr><td class=a14>
lpMMI->ptMaxSize.y=m_FullScreenRect.Height();</td></tr></table><table width=100% ><tr><td class=a14>
lpMMI->ptMaxPosition.x=m_FullScreenRect.Width();</td></tr></table><table width=100% ><tr><td class=a14>
lpMMI->ptMaxPosition.y=m_FullScreenRect.Height();</td></tr></table><table width=100% ><tr><td class=a14>
// 最大的Track尺寸也要改变</td></tr></table><table width=100% ><tr><td class=a14>
lpMMI->ptMaxTrackSize.x=m_FullScreenRect.Width();</td></tr></table><table width=100% ><tr><td class=a14>
lpMMI->ptMaxTrackSize.y=m_FullScreenRect.Height();</td></tr></table><table width=100% ><tr><td class=a14>
}CFrameWnd::OnGetMinMaxInfo(lpMMI) ;</td></tr></table><table width=100% ><tr><td class=a14>
}完成上面的编程后,可以联编执行FullScreen.exe,选择菜单“View\Full Screen”或点击与之关联的工具栏按钮即可进入全屏显示状态。但现在还需要增加用户退出全屏显示状态的操作接口,下面讲述如何编程实现按“Esc”键退出全屏显示状态。</td></tr></table><table width=100% ><tr><td class=a14>
1)在ClassView中选中CMainFrame并单击鼠标右键,选择“Add Member Function...”,添加public类型的成员函数EndFullScreen,该函数将完成退出全屏显示的操作。</td></tr></table><table width=100% ><tr><td class=a14>
void CMainFrame::EndFullScreen()</td></tr></table><table width=100% ><tr><td class=a14>
{if(m_bFullScreen)</td></tr></table><table width=100% ><tr><td class=a14>
{// 退出全屏显示, 恢复原窗口显示</td></tr></table><table width=100% ><tr><td class=a14>
ShowWindow(SW_HIDE);</td></tr></table><table width=100% ><tr><td class=a14>
SetWindowPlacement(&m_OldWndPlace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -