菜鸟提问:
我想在一个对话框上面添加一个icon图标,就是类似文档窗口上那种可以显示在标题前面的图标,怎么添加,如何和程序链接?
我只知道,在文档窗口里面,只要把资源里面ICON文件夹里面的IDR_MAINFRAME改成自己想要的图标就可以了,那么在DIALOG里面怎么改呢?
谢谢!!
另外,我想请问下:在MFC里面,这些资源是在什么地方和程序链接起来的,如何链接的?谢谢各位大侠!!

解决方案 »

  1.   

    HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);...IDI_ICON1是图标资源的ID值。
      

  2.   

    把你自己的ICON命名为IDR_MAINFRAME,放到资源文件夹下
      

  3.   

    我的程序是基于对话框的,我也像你说的做过的,貌似不能实现在对话框上面出现ICON吧?
      

  4.   

    在对话框上放一个CStatic,然后在CStatic中LoadIcon,图标就显示在那个静态的CStatic上了
      

  5.   

       ICON至少要两种状态的,你看一下VC++里原本的那个图标,好像有32*32和16*16两种的.你看一下这个帖子:http://topic.csdn.net/u/20090428/15/a3a466a5-105c-4940-ac4f-879b4c84d206.html
      

  6.   

    你是说在OnInitDialog里面用这个吗?我试了下貌似不行啊,是不是还要再加点别的?
      

  7.   

    我已经实现了
    具体做法是
    在资源里加入一个图标资源,记住ID
    在对话框上面加入一个图像控件(在控件工具条是右上角)
    然后进入属性
    改ID,类型为图标,图像是IMAGE
    这样的话,你的控件就变成了你加入的那个图标了
    至于你后面的那个问题
    呵呵……我也答不了……
    抱歉了
      

  8.   

    如果是在标题栏里加入的话,就是前面的仁兄们讲的了
    添加你自己的图标资源,记住它的ID
    然后呢,在程序的CPP里
    CMy23Dlg::CMy23Dlg(CWnd* pParent /*=NULL*/)   【23是我的工程名】
    : CDialog(CMy23Dlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CMy23Dlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);    【LoadIcon里面的那个参数可以改为你自己的图标的ID后,这样的话,就可以实现了】
    }
    我想,也许这就是你要的结果吧
      

  9.   

    是窗口标题,就是打开对话框后,该对话框左上角显示一个图标,不是.EXE文件的图标
      

  10.   

    我的确实实现了
    在标题栏里可以加入我自己绘制的任何一个图标资源
    首先吧,在工具栏里,插入->资源—>bitmap->新建
    然后你可以重绘一个
    或者你引入一个别的
    但是ID一定要记住
    然后双击对话框
    在m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    用你的ID换掉括号里的
    运行就可以了嘛  
      

  11.   

    很容易。
     AfxGetApp()->LoadIcon(IDR_ICO1); 
    这样就是对话框改变标题图标的,我试过了,可行
      

  12.   

    谢谢楼上的几位热心的回复,我刚刚重新新建了一个试了下,发现其实只要把原始自带的ID号为IDR_MAINFRAME的那个图标改成我自己的就可以实现了
    但是现在问题很奇怪:我这个程序运行后,弹出来的对话框标题前面没有任何图标,但是桌面最下面那个最小化的窗口却有该图标,这是怎么回事呢???