vc++基础教程 第9章Word文档格式.docx
- 文档编号:15755191
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:16
- 大小:612.48KB
vc++基础教程 第9章Word文档格式.docx
《vc++基础教程 第9章Word文档格式.docx》由会员分享,可在线阅读,更多相关《vc++基础教程 第9章Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
修改方法有以下几种:
●直接修改CREATESTRUCT结构,代码如下:
BOOLCMainFrame:
PreCreateWindow(CREATESTRUCT&
cs)
{
if(!
CFrameWnd:
PreCreateWindow(cs))
returnFALSE;
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
cs.style&
=~WS_MAXIMIZEBOX;
//去掉窗口的最大化按钮
=~FWS_ADDTOTITLE;
//允许添加自己的标题
cs.lpszName="
VisualC++教学"
;
returnTRUE;
}
其中style和lpszName是结构CREATESTRUCT的数据成员,分别表示框架窗口的样式和标题。
需要注意的是,要想将窗口框架显示标题改为我们的标题,必须要将style的FWS_ADDTOTITLE属性去掉。
运行程序,会发现窗口的最大化按钮不见了,并且标题再不是以前的那种很枯燥的“无标题”,而是换成了我们自己添加的"
,结果如图9-00所示。
图9-00去掉了最大化按钮及添加新标题
●重新设计、填写WNDCLASS,代码如清单9-00所示:
清单9-00CMainFrame:
PreCreateWindow函数代码
-------------------------------------------------------------------------------
1BOOLCMainFrame:
2{
3if(!
4returnFALSE;
5//TODO:
6//theCREATESTRUCTcs
7WNDCLASSwndClass;
8wndClass.style=CS_HREDRAW;
9wndClass.lpfnWndProc=(WNDPROC):
DefWindowProc;
10wndClass.cbClsExtra=0;
11wndClass.cbWndExtra=0;
12wndClass.hInstance=:
AfxGetInstanceHandle();
13wndClass.hIcon=LoadIcon(:
AfxGetInstanceHandle(),
14MAKEINTRESOURCE(IDI_ICON1));
15wndClass.hCursor=LoadCursor(NULL,IDC_NO);
16LOGBRUSHlgbr;
17lgbr.lbStyle=BS_SOLID;
18lgbr.lbColor=RGB(255,255,0);
19lgbr.lbHatch=HS_CROSS;
20wndClass.hbrBackground=CreateBrushIndirect(&
lgbr);
21wndClass.lpszMenuName=NULL;
22wndClass.lpszClassName="
hello"
23RegisterClass(&
wndClass);
24cs.lpszClass="
25returnTRUE;
26}
第7~22行代码定义了一个新的窗体类wndClass并设计该类;
,
第16~19行部分代码中自定义了一个LOGBRUSH结构类型的画刷lgbr,其中lbStyle、lbColor和lbHatch是该结构体的三个数据成员,分别表示所定义的画刷的样式等属性,设置该画刷的属性为实心的黄色,新设计的窗口类的背景就采用这个画刷。
其中IDI_ICON1是我们在资源面板中新添加的一个图标资源的ID。
代码中的大部分内容在第二章都接触过,可能最后一句cs.lpszClass="
;
有的读者大概不理解该句代码的用意。
我们知道,在CMainFrame:
PreCreateWindow中,应用程序根据该函数传来的cs进行框架的显示,这个cs结构中的数据成员lpszClass包含框架生成时采用的窗口类的名称,如果我们不添加最后一句代码将我们的窗口类赋给lpszClass数据成员,那么它还会采用原来系统默认的窗口类。
运行程序,读者会发现,框架的图标变了,但是背景和光标没有变,如图9-01所示,那是由于视图类覆盖在框架类上了,应将此段代码拷入CEX09_00View:
PreCreateWindow函数中,就可以看到效果了。
图9-01修改了显示的图标
●利用GetClassInfo函数,代码如清单9-01所示:
清单9-01CMainFrame:
7WNDCLASSwndclass;
8:
GetClassInfo(AfxGetInstanceHandle(),cs.lpszClass,&
wndclass);
9wndclass.hIcon=:
LoadIcon(:
10MAKEINTRESOURCE(IDI_ICON1));
11wndclass.lpszClassName="
12:
RegisterClass(&
13cs.lpszClass="
14returnTRUE;
15}
第7行首先定义一个窗口类对象wndclass,然后在第8行调用GetClassInfo函数将取得的当前使用的窗口类信息赋给对象wndclass,最后,通过9~11行修改wndclass,再由12、13行代码重新注册及加载修改后的窗口对象来实现,程序运行结果同图9-01一样。
函数GetClassInfo用于取得某一窗口类的信息,原形如下:
BOOLGetClassInfo(HINSTANCEhInstance,LPCTSTRlpClassName,LPWNDCLASSlpWndClass);
第一个参数hInstance,表示创建窗口类的当前运行的应用程序实例。
第二个参数lpClassName,要获取的窗口类的类名。
第三个参数lpWndClass,指向WNDCLASS结构类型的对象,函数调用后获取的窗口类的信息存放到该参数中。
2.在CMainFrame:
OnCreate中修改。
●利用SetWindowLong函数,如下:
intCMainFrame:
OnCreate(LPCREATESTRUCTlpCreateStruct)
{……
SetWindowLong(m_hWnd,GWL_STYLE,
:
GetWindowLong(m_hWnd,GWL_STYLE)&
~WS_MAXIMIZEBOX);
return0;
其中,GetWindowLong函数用于取得指定窗口的信息,函数原形如下:
LONGGetWindowLong(HWNDhWnd,intnIndex);
第一个参数hWnd,表示要获取信息的窗口句柄,或窗口类所在的窗口.
第二个参数nIndex,要获取的信息索引,此参数可取下列值:
GWL_EXSTYLE获取窗口的扩展风格
GWL_STYLE获取窗口的样式
GWL_WNDPROC获取窗口过程的回调函数
函数SetWindowLong,用于改变指定窗口的属性风格,该函数原形如下:
LONGSetWindowLong(HWNDhWnd,intnIndex,LONGdwNewLong);
第一个参数hWnd,表示要设置新属性的窗口句柄,或窗口类所在的窗口.
第二个参数nIndex,要设置的属性的索引,此参数可取下列值:
GWL_EXSTYLE设置新的窗口扩展风格
GWL_STYLE设置新的窗口样式
GWL_ID分配一个新的窗口标识
第三个参数dwNewLong,表示要设置的新的属性值。
上段代码的实现过程是首先调用GetWindowLong获取当前窗口的信息,然后去掉最大化按钮,最后调用SetWindowLong,给窗口设置新的属性。
●利用SetClassLong函数,如下:
SetClassLong(m_hWnd,GCL_HICON,
(long)AfxGetApp()->
LoadIcon(IDI_ICON1));
return0;
其中,函数SetClassLong用于重置当前窗口所包含的窗口类的WNDCLASS结构中的指定数据成员的属性,函数原形如下:
DWORDSetClassLong(HWNDhWnd,intnIndex,LONGdwNewLong);
GCL_HBRBACKGROUND设置新的背景画刷
GCL_HCURSOR设置新的光标
GCL_HICON设置新的图标
GCL_STYLE设置新的窗口样式
第三个参数dwNewLong,表示要设置的新的属性值。
9.1.2在视图类中修改程序外观
1.在EX09_00View:
PreCreateWindow中修改
●重新设计、填写WNDCLASS,代码如下:
BOOLCEX09_00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc+基础教程 第9章 vc 基础教程