在资源那右键选择添加资源,选择图标,然后自己绘制图标,这时图标会有个ID号,在设计窗口类时MAKEINTRESOURCE()对ID号转换为资源后
使用LoadIcon()加载资源,
我绘制的图标
设计窗口类的代码:
//设计窗口类,该窗口类并不是C++中的类,只是表示窗口特征的结构体
WNDCLASS MyWndClass; //WNDCLASS是个结构体,该结构体中的成员是指定窗口特征的数据
//WNDCLASS结构体
/*
typedef struct _WNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
Members
*/
//这两个变量允许用户请求Windows内部提供额外的空间以便额外数据与窗口
//实例发生联系,通常不分配空间
MyWndClass.cbClsExtra = NULL;
MyWndClass.cbWndExtra = NULL;
//背景颜色,这里有两种方法
//GetStockObject()返回的句柄是HGDIOBJ类型,需要转换,
//可以加载画刷,也可以加载画笔,
//GetStockObject()参数的值有(看MSDN)
//BLACK_BRUSH 黑色画刷
//DKGRAY_BRUSH 深灰色画刷
//GRAY_BRUSH 灰色画刷
//WHITE_BRUSH 白色画刷
//MyWndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
MyWndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
//窗口的图标,如果为NULL,系统将提供一个默认的图标
//LoadIcon()加载图标资源,返回图标句柄,
//如果加载系统标准的图标第一个参数必须为NULL,第二个参数值为
//IDI_ERROR 错误图标
//IDI_APPLICATION 默认应用程序图标
//IDI_QUESTION 问号图标
//IDI_EXCLAMATION 感叹号图标
//IDI_ASTERISK 星号图标
//IDI_WARNING 警告图标
//IDI_WINLOGO Windows图标
//IDI_HAND 与IDI_ERROR相同
//IDI_INFORMATION 消息图标
//还有很多.....
//MyWndClass.hIcon = LoadIcon(NULL,IDI_WINLOGO); //使用系统图标
MyWndClass.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));//使用自定义图标
//光标,LoadCursor()的使用与LoadIcon()相同
MyWndClass.hCursor = LoadCursor(NULL,IDC_APPSTARTING);
MyWndClass.hInstance = hInstance; //当前实例的句柄
MyWndClass.lpfnWndProc = MyWindowProc; //窗口函数(消息处理函数),lpfnWndProc是个函数指针
MyWndClass.lpszClassName = szWindowClass; //窗口类名
MyWndClass.lpszMenuName = NULL ;// 菜单,指定菜单资源的名字,NULL是表示没有菜单,
//MyWndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);//一种,MAKEINTRESOURCE()加载菜单
MyWndClass.style = CS_HREDRAW|CS_VREDRAW; //使用|把多种窗口样式连接在一起
//窗口的样式
//CS_HREDRAW 表示当水平方向宽度发生变化时重绘整个窗口
//CS_VREDRAW 表示当垂直方向高度发生变化时重绘整个窗口
//CS_NOCLOSE 禁用系统菜单中的Close命令,既是没有关闭按钮
//CS_DBLCLKS 当用户双击鼠标时向窗口过程函数发送鼠标双击消息
效果: