我编了一个vc程序,原来是有rc文件的,现在我需要把它的rc文件改成一个空的rc文件,结果发现该程序的图标就从VC图标变成了Dos程序的那个白色图标,如果保持这个空的rc文件,我怎么才能更改该程序的图标啊?

解决方案 »

  1.   

    增加IDR_MAINFRAMEL图标,两种大小的。
      

  2.   

    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX);  wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = (WNDPROC)WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_DLGCHAR);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName = (LPCSTR)IDC_DLGCHAR;
    wcex.lpszClassName = szWindowClass;
    wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex);
    }注意这句话,你如果想改变图标的话,只要把LoadIcon改成LoadImage就可以从一个图标文件中加载图标进来了
    wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_DLGCHAR);
      

  3.   

    wndclass.hIcon  =  LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICON)) ;
      

  4.   

    还要把图标编辑一下保存
    然后在主程序包含 <windows.h>下面包含 "resource.h"
      

  5.   

    ATOM MyRegisterClass(HINSTANCE hInstance)
    我生成的是single document程序,这个函数要在那写好啊?
      

  6.   

    不知道楼主的rc文件里面还有没有图标项,如果没有了就如果同上几位说的那样,新建一个ID为IDR_MAINFRAME的图标项然后再把你想要修改成的图标复制到你资源编辑器的IDR_MAINFRAME的图标那一项里面。保存以后重新编译一下看看有没有效果了?
      

  7.   

    哦,你说的是SDI啊!App类里面有这么一句话:
    IDR_MAINFRAME包含了菜单、快捷键、图标、字符串等等,你应该可以都把这些Load进来
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CSDIDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CSDIView));
    AddDocTemplate(pDocTemplate);
      

  8.   

    先把原来得 IDR_MAINFRAMEL项删除,然后菜单:insert -> resource -> import,然后选好你要的图标,导入,将此项改为IDR_MAINFRAMEL。
      

  9.   

    主要是设置窗口类型WCLASS结构体中的hIcon变量
      

  10.   

    问题是怎么设置,在什么地方重载什么函数,我用的是Single Document类型