学习MFC已有一段时间了,其中大大小小也碰到了不少问题,但也通过搜索或者问人得到了解决..现在想将其中的一些问题和解决办法写出来,一方面与碰到相同问题
的朋友共享一下,另一方面加强一下印象..嘻嘻...
今天说一下程序界面的更改..
一.修改窗口大小,位置和类型:
找到应用程序主框架类(CMainFrame)中的PreCreatWindow()函数,它有一个CREATESTRUCT 类型的cs参数,就是通过修改这个参数达到我们的目的的..
1.修改窗口标题:cs.lpszName="Hello World",重新编译一下发现标题并没有改变,后来发现原来的窗口具有 FWS_ADDTOTITLE 这个类型,它会用文档的标题
替换框架的标题,要去掉这个,cs.style&=~(FWS_ADDTOTITLE);或者重新定义cs.style;
2.修改窗口类型:通过修改cs.style来达到目的,它有很多值,以WS(window style)开头,如WS_SYSMENU,WS_MINIMIZE,具体的可以查阅MSDN,各种类型可以通过
"|"运算组合,如果要设计一个固定大小的窗口(如一个棋类的窗口,大小是不能改变的)只要不带WS_MAXIMIZEBOX(最大化按钮),和WS_THICKFRAME(调整窗口大小)
这两个值即可,没事的时候自己可以多组合一下看看效果..
3.修改窗口大小:这个最简单,只要修改cs的cx,cy,x,y即可,其中cx,cy是用来调整窗口宽和高,x,y是用来设置窗口左上角的坐标的..
二.修改标题栏图标和应用程序的图标:
1.应用程序的图标:不少网友都提供了不同方法,但我觉得最简单有效的方法是将你准备的新ICO,如1.ico,复制到res文件夹中,再用记事本打xxx.rc文件,找到其中图标资源定义的地方,(类似IDR_MAINFRAME ICON DISCARDABLE "res//ee.ico")将ID号为
IDR_MAINFRAME的资源路径改为”res//1.ico”,再重新编译,到DEBUB文件夹下看一下,OK了..
2.标题栏图标的更改:这里要用到一个函数SetClassLong(),(该函数用来更改窗口的背景,Ico,Cursor等..大家可以到MSDN中查看详细说明), 导入一个ICON,ID设为IDI_ICON1,再给CmainFrame类添加WM_CREATE消息响应函数,在其中添加代码:
HICON hicon1=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));
SetClassLong(m_hWnd,GCL_HICON,long(hicon1));
重新编译,OK了;
说明:AfxGetInstanceHandle()函数用以得到相前实例的句柄,宏MAKEINTRESOURCE用以资源号转换为地址,这样才能符合要求;
注:笔者也是新手,如有哪些不对的地方还请各位大虾们指出..