欢迎来到天天文库
浏览记录
ID:38086863
大小:21.04 KB
页数:4页
时间:2019-05-28
《VC++ 5.0定制窗口的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VC++5.0定制窗口的方法 VC++5.0是Microsoft新近推出的可视化C++集成开发环境,它在继承以前VC++的基础上增加了许多新的功能,用于支持Win32平台应用程序、服务程序和控件的开发。VC++5.0提供了强大、快捷的编程工具,其中最基本的是三个导航系统:AppWizard用于程序框架的生成,AppStudio用于资源的编辑,ClassWizard用于类的编辑和管理。其中,窗口、菜单等无需用户编写程序,而由系统自动生成。但在许多情况下,用户要设置自己希望的窗口(即定制窗口)。 一、如何在多文档界面下去掉开始的子窗口 在多文档界面下,自动生成一个新的子窗口,而一
2、个实际的应用系统往往是由用户操作后再生成新的窗口。为了去掉开始的子窗口,可在应用程序文件分析命令行的语句 CCommandLineInfocmdInfo; ParseCommandLine(cmdInfo); 后加入: cmdInfo.m_nShellCommand=CCommandLineInfo::FileNothing; 去掉子窗口后,就只剩下主框架窗口了。因为在多文档界面中,系统生成两个菜单:一个是用户的菜单,另一个是系统主框架菜单。通常用户工作在用户菜单。为了保证菜单界面不变,可修改主框架菜单资源,使其与用户菜单保持一致。 二、修改窗口标题栏 在缺省情况下,
3、窗口标题栏中显示的文档名为文件名。若要在标题栏显示一个长字符串,而不修改文件名,则可将项目工作区转换到ResourceView面板,选择串表(StringTable)资源,在StringTable中双击IDR_MAINFRAME项,caption中显示一字符串xxyy......,将第一个参数修改为用户自己希望见到的主窗口标题即可。 三、修改主框架窗口、子窗口及其显示性质 可通过覆盖CWnd的成员函数PreCreateWindow来修改主窗口和子窗口。PreCreateWindow函数在即将创建窗口前被调用,函数原型为:VirtualBOOLPreCreateWindow
4、(CREATESTRUCTcs)。如果要覆盖PreCreateWindow函数,则在创建窗口前可以修改CREATESTRUCT结构以替换缺省参数。CREATESTRUCT结构存放窗口特征,如窗口坐标、风格等,还可以定义新窗口风格。 若想修改主框架窗口,则可在MainFrm.cpp的下列成员函数中加入待修改的内容。例如: BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs) { //通过修改CREATESTRUCT结构来修改窗口类或风格 //定义新窗口的高度、宽度 cs.cx=450; cs.cy=300; //定义新窗口风
5、格为去掉主窗口名及最大化等按钮 cs.style=WS_POPWINDO; returnCFrameWnd::PreCreateWindow(cs); } 定制子窗口的操作与上述主窗口相同,可在ChildFrm.cpp中加入以下内容: BOOLCChildFrame::PreCreateWindow(CREATESTRUCT&cs) { //通过修改CREATESTRUCT结构来修改窗口类或风格 returnCMDIChildWnd::PreCreateWindow(cs); } 要想修改视图窗口的显示性质,则可在视图文件xxView.cpp的下述成员函数中加入
6、以下语句: BOOLxxView::PreCreateWindow(CREATESTRUCT&cs) { //增加的语句 cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW
7、CS_VREDRAW, 0,(HBRUSH)::GetStockObject(WHITE_BRUSH),0); returnCScrollView::PreCreateWindow(cs); } 其中,cs的参数pszClass用于存放Windows窗口类名称。要想注册Windows窗口 类,则必须调用全局函数AfxRegisterWndClass。该函数原
8、型为: LPCTSTRAFXAPIAfxRegisterWndClass(UINTnClassStyle,HCURSORhCursor=0,HBRUSHhbrBackground=0,HICONhIcon=0) 上述各参数用于定义风格,其含义分别为光标资源句柄、背景资源句柄、图标资源句柄。上述增加的语句的作用是:改变窗口大小时重画窗口、不显示光标图标、设置白色背景。 四、窗口的滚动 使用CScrollView代替CView类即可实现滚动窗口。此时,系统生成On
此文档下载收益归作者所有