VC内部培训资料——第9章 修改框架程序的显示效(3)
发布时间:2021-06-07
发布时间:2021-06-07
修改框架程序的显示效果
VC++培训教程草稿(2000年撰写) 张孝祥、袁龙友著 网址:
置该画刷的属性为实心的黄色,新设计的窗口类的背景就采用这个画刷。
其中IDI_ICON1是我们在资源面板中新添加的一个图标资源的ID。
代码中的大部分内容在第二章都接触过,可能最后一句cs.lpszClass="hello";有的读者大概不理解该句代码的用意。我们知道,在CMainFrame::PreCreateWindow中,应用程序根据该函数传来的cs进行框架的显示,这个cs结构中的数据成员lpszClass包含框架生成
时采用的窗口类的名称,如果我们不添加最后一句代码将我们的窗口类赋给lpszClass数据成员,那么它还会采用原来系统默认的窗口类。
运行程序,读者会发现,框架的图标变了,但是背景和光标没有变,如图9-01那是由于视图类覆盖在框架类上了,应将此段代码拷入函数中,就可以看到效果了。
图9-01
1 2 3 4 5 6 7 8 9 12 13 14
利用GetClassInfo函数,所示:
清单函数代码
{
if( !CFrameWnd::PreCreateWindow(cs) )
wndclass.lpszClassName="hello"; ::RegisterClass(&wndclass); cs.lpszClass="hello"; return TRUE;
10 15 }
第7行首先定义一个窗口类对象wndclass,然后在第8行调用GetClassInfo函数将取得的当前使用的窗口类信息赋给对象wndclass,最后,通过9~11行修改wndclass,再由12、13行代码重新注册及加载修改后的窗口对象来实现,程序运行结果同图9-01一样。
函数GetClassInfo用于取得某一窗口类的信息,原形如下:
下一篇:备品备件出库登记表