📄 vc++50定制窗口的方法.htm
字号:
<html><head><meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"><meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0"><title>VC++5.0定制窗口的方法</title></head><body><!-- FC HP BN1 START --><!-- Please do not remove the line above or the code within this section --><!-- Doing so may cause damage to your pages or insertion of multiple banners--><center><p><table border="0" cellspacing="0" cellpadding="0"><tr><td colspan="11"><img src="http://www.fortunecity.com/console2/newnav/top.gif" height="7" width="555"></td></tr><tr><td><img src="http://www.fortunecity.com/console2/newnav/left.gif" alt="FC Navigation Console" height="60" width="72" border="0" usemap="#fcleft"><map name="fcleft"><area shape="rect" coords="10,43,64,60" href="http://www2.fortunecity.com/cgi-bin/homepage/estate.pl?referer=navbar" target="_top"><area shape="rect" coords="9,21,61,36" href="http://www2.fortunecity.com/cgi-bin/showarea.pl?area=skyscraper&referer=navbar" target="_top"><area shape="rect" coords="8,0,62,15" href="http://www.fortunecity.com" target="_top"><area shape="rect" href="http://www.fortunecity.com" target="_top" coords="0,0,49,49"></map></td><td colspan="9"><A HREF="http://ad.doubleclick.net/jump/fc.us468/member/tech;s1=m;s3=tech;pos=1;tag=g;sz=468x60;mtile=1;num=39321?"><IMG SRC="http://ad.doubleclick.net/ad/fc.us468/member/tech;s1=m;s3=tech;pos=1;tag=g;sz=468x60;mtile=1;num=39321?" border=0 height="60" width="468"></A></td><td><img src="http://www.fortunecity.com/console2/newnav/right.gif" width="15" height="60"></td></tr><tr><td><img src="http://www.fortunecity.com/console2/newnav/left2.gif" height="31" width="72" target="_top"></td><td><img src="http://www.fortunecity.com/console2/newnav/gap1.gif" width="17" height="31"></td><td><a href="http://adex3.flycast.com/server/socket/127.0.0.1:2800/click/FortuneCitycom/NavBar1/39321" target="_top"><img src="http://adex3.flycast.com/server/socket/127.0.0.1:2800/ad/FortuneCitycom/NavBar1/39321" border="0" width="88" height="31"></a></td><td><img src="http://www.fortunecity.com/console2/newnav/gap2.gif" width="24" height="31"></td><td><a href="http://adex3.flycast.com/server/socket/127.0.0.1:2800/click/FortuneCitycom/NavBar2/39321" target="_top"><img src="http://adex3.flycast.com/server/socket/127.0.0.1:2800/ad/FortuneCitycom/NavBar2/39321" border="0" width="88" height="31"></a></td><td><img src="http://www.fortunecity.com/console2/newnav/gap3.gif" width="24" height="31"></td><td><a href="http://adex3.flycast.com/server/socket/127.0.0.1:2800/click/FortuneCitycom/NavBar3/39321" target="_top"><img src="http://adex3.flycast.com/server/socket/127.0.0.1:2800/ad/FortuneCitycom/NavBar3/39321" border="0" width="88" height="31"></a></td><td><img src="http://www.fortunecity.com/console2/newnav/gap4.gif" width="19" height="31"></td><td><a href="http://www2.fortunecity.com/cgi-bin/homepage/navbarforward.cgi?from=nav4&referer=navbare" target="_top"><img src="http://www.fortunecity.com/console2/newnav/button4.gif" border="0" width="88" height="31"></a></td><td><img src="http://www.fortunecity.com/console2/newnav/gap5.gif" width="32" height="31"></td><td><img src="http://www.fortunecity.com/console2/newnav/right2.gif" width="15" height="31"></td></tr></table></p></center><!-- WARNING: under no circumstances remove the line below. Doing so may damage your page.--><!-- FC HP BN1 END --><font SIZE="4"><h2 ALIGN="center">VC++5.0</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">定制窗口的方法</h2></font><p ALIGN="CENTER">回到<a href="../chinese.htm">中文教材</a></p><font SIZE="4"><p ALIGN="JUSTIFY">VC++5.0</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">是</font><fontSIZE="4">Microsoft</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">新近推出的可视化</font><fontSIZE="4">C++</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">集成开发环境。它在继承以前</font><fontSIZE="4">VC++</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">的基础上增加了许多新的功能,用于支持</font><fontSIZE="4">Win32</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">平台应用程序、服务程序和控件的开发。</font><fontSIZE="4">VC++5.0</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">提供了强大、快捷的编程工具,其中最基本的是三个导航:</font><fontSIZE="4">AppWizard</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">用于程序框架的生成,</font><fontSIZE="4">AppStudio</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">用于资源的编辑,</font><fontSIZE="4">ClassWizard</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">用于类的编辑和管理。其中,窗口、菜单等无需用户编写程序,而由系统自动生成。但在许多情况下,用户要设置自己希望的窗口(即定制窗口)。</p><p ALIGN="JUSTIFY">一、如何在多文档界面下去掉开始的子窗口</p><p ALIGN="JUSTIFY">在多文档界面下,自动生成一个新的子窗口,而一个实际的应用系统往往是由用户操作后再生成新的窗口。为了去掉开始的子窗口,可在应用程序文件分析命令行的语句</p></font><font SIZE="4"><p ALIGN="JUSTIFY">CcommandLineInfo cmdInfo;</p><p ALIGN="JUSTIFY">ParseCommandLine(cmdInfo);</p></font><font FACE="宋体" LANG="ZH-CN" SIZE="4"><p ALIGN="JUSTIFY">后加入:</p></font><font SIZE="4"><p ALIGN="JUSTIFY">cmdInfo.m-nShellCommand=CcommandLineInfo::FileNothing;</p></font><font FACE="宋体" LANG="ZH-CN" SIZE="4"><p ALIGN="JUSTIFY">去掉子窗口后,就只剩下主框架窗口了。因为在多文档界面中,系统生成两个菜单:一个是用户的菜单,另一个是系统主框架菜单。通常用户工作在用户菜单。为了保证菜单界面不变,可修改主框架菜单资源,使其与用户菜单保持一致。</p><p ALIGN="JUSTIFY">二、修改窗口标题栏</p><p ALIGN="JUSTIFY">在缺省情况下,窗口标题栏中显示的文档名为文件名。若要在标题栏显示一个长字符串,而又不修改文件名,则可将项目工作区转换到</font><fontSIZE="4">Resource View</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">面版,选择串表(</font><fontSIZE="4">StringTable</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">)资源,在</font><fontSIZE="4">StringTable</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">中双击</font><fontSIZE="4">IDR-MAIN-FRAME</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">项,</font><fontSIZE="4">caption</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">中显示一字符串</font><fontSIZE="4">xx\n\yy......</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">,将第一个参数修改为用户自己希望见到的主窗口标题即可。</p><p ALIGN="JUSTIFY">三、修改主框架窗口、子窗口及其显示性质</p><p ALIGN="JUSTIFY">可通过覆盖</font><font SIZE="4">CWnd</font><font FACE="宋体"LANG="ZH-CN" SIZE="4">的成员函数</font><font SIZE="4">PreCreateWindow</font><fontFACE="宋体" LANG="ZH-CN" SIZE="4">来修改主窗口和子窗口。</font><font SIZE="4">PreCreateWindow</font><fontFACE="宋体" LANG="ZH-CN" SIZE="4">函数在即将创建窗口前被调用,函数原型为:</font><fontSIZE="4">Virtual BOOL PreCreateWindow</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">函数(</font><fontSIZE="4">CREATESTRUCT cs</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">)。如果要覆盖</font><fontSIZE="4">PreCreateWindow</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">函数,则在创建窗口前可以修改</font><fontSIZE="4">CREATESTRUCT</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">结构以替换缺省参数。</font><fontSIZE="4">CREATESTRUCT</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">结构存放窗口特征,如窗口坐标、风格等,还可以定义新窗口风格。</p><p ALIGN="JUSTIFY">若想修改主框架窗口,则可以在</font><font SIZE="4">MainFrm.cpp</font><fontFACE="宋体" LANG="ZH-CN" SIZE="4">的下列成员函数中加入待修改的内容。例如:</p></font><font SIZE="4"><p ALIGN="JUSTIFY">BOOL CmainFrame::PreCreateWindow(CREATESTRUCT&cs)</p><p ALIGN="JUSTIFY">{</p><p ALIGN="JUSTIFY">//</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">通过修改</font><fontSIZE="4">CREATESTRUCT</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">结构来修改窗口类或风格</p></font><font SIZE="4"><p ALIGN="JUSTIFY">//</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">定义新窗口的高度、宽度</p></font><font SIZE="4"><p ALIGN="JUSTIFY">cs.cx=450;</p><p ALIGN="JUSTIFY">cs.cy=300;</p><p ALIGN="JUSTIFY">//</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">定义新窗口风格为去掉主窗口名及最大化等按钮</p></font><font SIZE="4"><p ALIGN="JUSTIFY">cs.style=ws-POPWINDO;</p><p ALIGN="JUSTIFY">return CframeWnd::PreCreateWindow(cs);</p><p ALIGN="JUSTIFY">}</p></font><font FACE="宋体" LANG="ZH-CN" SIZE="4"><p ALIGN="JUSTIFY">定制子窗口的操作与上述主窗口相同,可在</font><fontSIZE="4">ChildFrm.cpp</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">中加入以下内容:</p></font><font SIZE="4"><p ALIGN="JUSTIFY">BOOL CmainFrame::PreCreateWindow(CREATESTRUCT&cs)</p></font><font FACE="宋体" LANG="ZH-CN" SIZE="4"><p ALIGN="JUSTIFY">{</p></font><font SIZE="4"><p ALIGN="JUSTIFY">//</font><font FACE="宋体" LANG="ZH-CN" SIZE="4">通过修改</font><font
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -