如何改变运行程序中左上角默认图标和生成可执行文件的默认图标,将其默认图标换成自已,如何操作?

解决方案 »

  1.   

    SendMessage(hwnd,WM_SETICON,ICON_BIG(或者ICON_SMALL),ICON的句柄)
      

  2.   

    程序中左上角默认图标可以通过在框架类中调用AfxRegisterWndClass函数来处理,至于生成可执行文件的默认图标,我是在控制面板-文件夹选项-文件类型-高级中修改,你可以把同一类型文件扩展名的图标统一换成你喜欢的图标样式。
      

  3.   

    MFC中可以就在资源里面,吧默认的图标删除再添加为自己的图标
      

  4.   

    我想在MFC的对话框中实现,如果直接将程序默认图标的ID换成设置图标的ID,运行程序会出错。如果在资源中加入三个图标,并且让对话框Dlg左上角的图标不停的在三个图标中变换,以如何实现?
      

  5.   

    程序运行时左上角的图标可以通过向窗体发送WM_SETICON消息来处理.
    可执行文件的图标并不是通过代码来设置的,编译器一般用ID号最小的ICON资源来作为编译后EXE文件的图标,所以你可以添加一个ICON资源,将它的ID设为最小,重新编译就行了.
      

  6.   

    在定时器里做
    我记得是定义三个大小图标数组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;
    }
      

  7.   

    我的步骤如下,还是有问题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]);有问题,请指教!
      

  8.   

    直接覆盖res文件夹里的ico文件就行了
      

  9.   

    用消息来改变图标吧:
    SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)m_hIcons[IconIndex]);