Hi,我用VC6新建了一个SDI App, ID为IDR_MAINFRAME的icon, 16x16 和 32x32的我都由default的
改为自己定义的MyIcon.ico.
Build后,在资源管理器里浏览,无论大图标还是小图标模式,看到的.exe图标都是自定义的那个.
可是,运行.exe后,在Windows任务栏和程式title bar上看到的却还是Default MFC Icon, 就是那个飘动的窗子!Wizard自动生成的CMyApp::InitInstance()实现中,我觉得LoadFrame函数应该就可以给主窗口取得正确的icon资源;可是,却只有在我写代码再次SETICON后,程式icon才正确了.Some codes in CMyApp::InitInstance()...//系统生成的代码
pFrame->LoadFrame(IDR_MAINFRAME,
  WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
  NULL);//我追加的2行代码
 HICON hIcon = LoadIcon(IDR_MAINFRAME);
 HICON hPrevIcon = (HICON)AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);虽然问题暂时得到解决,我不解的是,为什么还一定需要再次SETICON才行?谢谢指点迷津!

解决方案 »

  1.   

    LoadFrame不仅装载了ICON,还装载了其它其他资源.默认情况下,很多资源的ID都叫IDR_MAINFRAME
      

  2.   

    我的问题是,为什么LoadFrame装载ICON不对呢?还需要再次显式SETICON?
      

  3.   

    自己做了一个sdi程序试了试没有出现楼主的问题啊我是用向导做了一个sdi的程序然后改图标的话,在resource view中,新建一个图标,把它的ID改成IDR_MAINFRAME
    ,把原来的那个ID为IDR_MAINFRAME的图标的ID改成别的。当然,做图标的时候要做两个,一个大的32X32,一个小的,16X16
    然后,只要做这些,等到改好了,再运行就可以了啊
    根本不用自己load啊,这些不用我来做的啊不知道楼主的程序的框架是什么样的
      

  4.   

    resource view中,把原来的那个ID为IDR_MAINFRAME的图标删除,
    新建一个图标,把它的ID改成IDR_MAINFRAME
      

  5.   

    没遇见过这样的问题,是不是资源放在DLL里?