读书人

用setclasslong()修改图标的有关问题

发布时间: 2012-08-07 14:54:47 作者: rapoo

用setclasslong()修改图标的问题
MFC
我创建单文档程序在mainframe下的oncreate还函数下用setclasslong可以修改左上角的小图标
SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));

但是我在对话框程序里的dlg下的oncreate函数下使用这条代码没有效果,
SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP));
SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));
值得一提的是,上面的一条,修改cursor倒是可以生效,而窗口的小图标没有变,这是怎么回事?

请高手回答,谢谢!

[解决办法]
LoadIcon第一个参数给出一个有效的HANDLE
LoadIcon(AfxGetApp()->m_hInstance, ..)
为NULL是加载系统预定义的图标才这么用 还有图标尺寸有限制SM_CXICON SM_CYICON
msdn建议用LoadImage
[解决办法]
a 看错了 你是加载的IDI_ERROR 那么在执行之前 判断一下是否加载成功了看
还有SetClassLong出错了之后 看看GetLastError是多少
[解决办法]
我记得没错的话,ICON是OnInitdialog函数里有默认设置吧?
OnInitdialog是在onCreate之后。

你得在OnInitdialog里边改
[解决办法]
直接在 OnInitDialog() 方法里面 调用 SetIcon(hIcon, FALSE);就可以了

读书人网 >VC/MFC

热点推荐