VC++学习笔记5

来源:互联网 发布:手写电子笔记软件 编辑:程序博客网 时间:2024/05/23 20:23

声明:此为小白学习个人笔记,如果您看到这些文字,请忽略,谢谢!

定制窗口程序外观

学习心情:学习的过程是痛苦的,也是快乐的。学习总想获得点什么,然而往往知识是一点一点积累的,量变引起质变。或许很时间都没有成就感,或许有时感到疲惫与厌倦,但是目标就在远方,就看你是否有这个耐心去追寻。突然心里有个了答案:为什么像守望先锋、英雄联盟这些竞技类游戏这么火?因为5V5 ,就像打场球,胜则(。・∀・)ノ゙嗨,败则骂。与之前的角色扮演不同,RMB玩家就是NB,就是大神。充了很多钱才能变牛逼,玩个几个月才能变NB,没有竞技类游戏的即时胜利感。可惜~生活就是RMB玩家的世界,一夜暴富轮不到我,一球成名轮不到我。我还是慢慢打怪攒经验败了。知识需要积累,不然只能默默感叹:书到用时方恨少,钱到月底不够花!-_-~

窗口外观无非一下四个块
①标题
②工具栏
③视类区
④状态栏

改变时间
①创建窗口前 PreCreateWindows(cs)
1) 改变窗口参数结构体cs.xxxxx的值便可改变窗口属性
2)新建窗口类 WNDCLASS ,然后进行注册
但是在窗口创建过程中会多次调用PreCreateWindows( ),所以要定义静态的窗口类,不然会运行错误~
3)直接调用AfxRegisterWndClass()函数改变窗口属性,运行机制不明白。(在此不是很想弄明白,弄得多小弟容易糊涂)
②创建窗口后 OnCreate( );
1)SetClassLong
2) SetWindowLong( )
->使用函数不一样,但是最后效果一样

猜测:(学习总在猜来猜去,好听在推测,没有什么东西能给直接答案的)创建窗口之前是通过改变创建窗口得属性;而创建窗口之后是改变现实窗口的属性,即在显示窗口之前改变窗口的属性。

①改变标题栏
LOADICON(INSTANCE,。。。 ) 加载自己定义的图标
INSTANCE通过全局变量theAPP获得,使用外部变量需要声明:extern C+PROJECTNAME theAPP ,在书上使用 extern CStyle theAPP 报错,声明位置没有细究,能用就放着

②改变工具栏
创建工具栏资源->定义CToolBar 对象,调用.create()函数进行创建->LoadToolBar( )加载位图资源->EnableDocking+DockControl + RecalcLayout( ) 重新调整工具栏的显示与停靠,具体机制不明,但是不用就出错。
调用ShowControlBar( )集成上述功能,方便很多。

③视类区
就背景颜色,光标等,用SetWindowLong就行

④状态
可以显示时间,进度条等。
状态栏对象为m_wndStatusBar,通过在indicators[]插入字符资源添加新的状态框,但是ID号当中带有 TIME 就会出现错误,不造为啥。插入状态栏的大小于字符串的长度一致。
改变状态栏大小: CClientDC dc .->getTextExtent(str) ->SetPaneInfo( ) 动态改变状态栏大小
如果想把CPrpgressCtrl放进状态栏,就是用状态栏遮住某个状态框,在OnPaint中,动态移动进度条即可。如果使用定时器,让进度条StepIt() 前进,实测每秒前进10%。
在状态栏长条即StatusBar改变显示文字:View .OnMouseMove->((CMainFRAME*)GetParent( ) )->SetMessageText(str) ,即可显示当前鼠标移动位置,感觉这个会有点用。

0 0
原创粉丝点击