改变程序的图标 如何改变运行程序中左上角默认图标和生成可执行文件的默认图标,将其默认图标换成自已,如何操作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SendMessage(hwnd,WM_SETICON,ICON_BIG(或者ICON_SMALL),ICON的句柄) 程序中左上角默认图标可以通过在框架类中调用AfxRegisterWndClass函数来处理,至于生成可执行文件的默认图标,我是在控制面板-文件夹选项-文件类型-高级中修改,你可以把同一类型文件扩展名的图标统一换成你喜欢的图标样式。 MFC中可以就在资源里面,吧默认的图标删除再添加为自己的图标 我想在MFC的对话框中实现,如果直接将程序默认图标的ID换成设置图标的ID,运行程序会出错。如果在资源中加入三个图标,并且让对话框Dlg左上角的图标不停的在三个图标中变换,以如何实现? 程序运行时左上角的图标可以通过向窗体发送WM_SETICON消息来处理.可执行文件的图标并不是通过代码来设置的,编译器一般用ID号最小的ICON资源来作为编译后EXE文件的图标,所以你可以添加一个ICON资源,将它的ID设为最小,重新编译就行了. 在定时器里做我记得是定义三个大小图标数组m_icons初始化 m_icons[0] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON1)); m_icons[1] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON2)); m_icons[2] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURC(IDI_ICON3));ONTimer(){ static int iconIndex = 1; SetClassLong(m_hWnd, GCL_HICON, (LONG)m_icons[iconIndex]); iconIndex = (++iconIndex) % 3; } 我的步骤如下,还是有问题1、添加三个图标到资源中,ID分别为:IDI_ICON2、IDI_ICON3、IDI_ICON4,并在对话框构造函数中添加: Private: HICON m_icons[3]2、初始化:BOOL CPorpDlg::OnInitDialog(){ CDialog::OnInitDialog(); ……………………………………… m_hIcons[0] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON2)); m_hIcons[1] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON3)); m_hIcons[2] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON4)); SetTimer(1,500,NULL); return TRUE; // return TRUE unless you set the focus to a control}2、添加定时命令void CPorpDlg::OnTimer(UINT nIDEvent) {// TODO: Add your message handler code here and/or call default static int IconIndex = 0; SetClassLong(m_hWnd, GCL_HICON, (LONG)m_hIcons[IconIndex]); IconIndex = ++IconIndex % 3; SetDlgItemInt(IDC_EIDT1,IconIndex);//用EDIT返回IconIndex的变化情况;可以改变,图标没有改变!CDialog::OnTimer(nIDEvent);}是不是SetClassLong(m_hWnd, GCL_HICON, (LONG)m_hIcons[IconIndex]);有问题,请指教! 直接覆盖res文件夹里的ico文件就行了 用消息来改变图标吧:SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)m_hIcons[IconIndex]); 如果做简单的fpt下载器 求教如何通过SOCKS5代理打开网页 请教 vc 2003 的数据库应用想用数据库连接池 应该怎么办? VC6.0下使用C++编程遇到的问题 CFILE类在win2000上不能使用吗?请教! 求指纹识别SDK或相关算法,1:1模式 如何使一个应用程序只能打开一次? 调用函数WSAIoctl出现问题? 如何在另一个类中操作treeview? 怎样直接在IE中实时得到它的url请求,并进行控制(拒绝或转发) 麻烦各位推荐本MFC类库方面的书 关于MSXML解析器的内存管理问题
可执行文件的图标并不是通过代码来设置的,编译器一般用ID号最小的ICON资源来作为编译后EXE文件的图标,所以你可以添加一个ICON资源,将它的ID设为最小,重新编译就行了.
我记得是定义三个大小图标数组m_icons
初始化
m_icons[0] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON1));
m_icons[1] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON2));
m_icons[2] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURC(IDI_ICON3));
ONTimer()
{
static int iconIndex = 1;
SetClassLong(m_hWnd, GCL_HICON, (LONG)m_icons[iconIndex]);
iconIndex = (++iconIndex) % 3;
}
Private:
HICON m_icons[3]
2、初始化:
BOOL CPorpDlg::OnInitDialog()
{
CDialog::OnInitDialog();
………………………………………
m_hIcons[0] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON2));
m_hIcons[1] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON3));
m_hIcons[2] = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON4));
SetTimer(1,500,NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
2、添加定时命令
void CPorpDlg::OnTimer(UINT nIDEvent)
{// TODO: Add your message handler code here and/or call default
static int IconIndex = 0;
SetClassLong(m_hWnd, GCL_HICON, (LONG)m_hIcons[IconIndex]);
IconIndex = ++IconIndex % 3;
SetDlgItemInt(IDC_EIDT1,IconIndex);//用EDIT返回IconIndex的变化情况;可以改变,图标没有改变!
CDialog::OnTimer(nIDEvent);
}是不是SetClassLong(m_hWnd, GCL_HICON, (LONG)m_hIcons[IconIndex]);有问题,请指教!
SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)m_hIcons[IconIndex]);