改变程序的图标

z_jzhao 2009-10-05 06:24:06
如何改变运行程序中左上角默认图标和生成可执行文件的默认图标,将其默认图标换成自已,如何操作?
...全文
134 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
supconsupcon 2009-10-11
  • 打赏
  • 举报
回复
用消息来改变图标吧:
SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)m_hIcons[IconIndex]);
churenxh 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 z_jzhao 的回复:]
我的步骤如下,还是有问题

1、添加三个图标到资源中,ID分别为:IDI_ICON2、IDI_ICON3、IDI_ICON4,并在对话框构造函数中添加:
          Private:
                  HICON m_icons[3]
2、初始化:
CPorpDlg::CPorpDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPorpDlg::IDD, pParent)
{
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));

}
BOOL CPorpDlg::OnInitDialog()
{
CDialog::OnInitDialog();
………………………………………
  SetClassLong(m_hWnd, GCL_HICON, (LONG)m_icons[0]);

    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]);有问题,请指教!

[/Quote]
这样试试
z_jzhao 2009-10-10
  • 打赏
  • 举报
回复
更改图标是可以了,我说的交替变换图标。
liumenghappy 2009-10-10
  • 打赏
  • 举报
回复
直接覆盖res文件夹里的ico文件就行了
你妹的特盗不 2009-10-10
  • 打赏
  • 举报
回复
只能改那个默认图片的,我也试过很多方法,都是网上搜索的,不管用

直接把默认图片换成你需要的
z_jzhao 2009-10-10
  • 打赏
  • 举报
回复
我的步骤如下,还是有问题

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]);有问题,请指教!
churenxh 2009-10-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 z_jzhao 的回复:]
我想在MFC的对话框中实现,如果直接将程序默认图标的ID换成设置图标的ID,运行程序会出错。

如果在资源中加入三个图标,并且让对话框Dlg左上角的图标不停的在三个图标中变换,以如何实现?
[/Quote]
在定时器里做
我记得是定义三个大小图标数组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;
}
wltg2001 2009-10-07
  • 打赏
  • 举报
回复
程序运行时左上角的图标可以通过向窗体发送WM_SETICON消息来处理.
可执行文件的图标并不是通过代码来设置的,编译器一般用ID号最小的ICON资源来作为编译后EXE文件的图标,所以你可以添加一个ICON资源,将它的ID设为最小,重新编译就行了.
z_jzhao 2009-10-07
  • 打赏
  • 举报
回复
我想在MFC的对话框中实现,如果直接将程序默认图标的ID换成设置图标的ID,运行程序会出错。

如果在资源中加入三个图标,并且让对话框Dlg左上角的图标不停的在三个图标中变换,以如何实现?
野男孩 2009-10-05
  • 打赏
  • 举报
回复
在资源里面找到图标,删掉,换成自己的就行了。图标资源加进去时,ID要跟原来相同。
Randyqiu 2009-10-05
  • 打赏
  • 举报
回复
MFC中可以就在资源里面,吧默认的图标删除再添加为自己的图标
「已注销」 2009-10-05
  • 打赏
  • 举报
回复
程序中左上角默认图标可以通过在框架类中调用AfxRegisterWndClass函数来处理,至于生成可执行文件的默认图标,我是在控制面板-文件夹选项-文件类型-高级中修改,你可以把同一类型文件扩展名的图标统一换成你喜欢的图标样式。
lingwei9074 2009-10-05
  • 打赏
  • 举报
回复
SendMessage(hwnd,WM_SETICON,ICON_BIG(或者ICON_SMALL),ICON的句柄)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧