想引用资源文件中的 ICO 图标资源的“标号”-----
请用 Delphi 6\Demos\ResXplor\resxplor.dpr 这个DEMO随便打开一个delphi的exe文件,可以看到众多的资源,可是 Icon 下的图标资源不象Cursor光标资源那样每个都带有一个“标号”,如32761、32762等等。但是,还是用这个DEMO 打开“网络蚂蚁”的exe文件,却可以在Icon 下看到图标资源有标号,如101,137等等。这是为何?  是因为Delphi自身编译引起的吗?  
还是因为这是“网络蚂蚁”自身加入的新的资源?
可我在文件中加入了自己的图标资源{$R XXX.res},也是不行啊。我是想引用这个“标号”进行在注册表中注册后能够引用此图标资源。
另:除了这个方法,我怎样才能引用exe中的资源?????

解决方案 »

  1.   

    关键一句:
    if( ! EnumResourceNames( EDII.hInstance, RT_GROUP_ICON, (ENUMRESNAMEPROC )MyEnumProcedure, (LPARAM)GetSafeHwnd()) )其中:
    BOOL CALLBACK MyEnumProcedure( HANDLE  hModule, LPCTSTR  lpszType, LPTSTR  lpszName, LONG  lParam )
    {
        TCHAR szBuffer[256];
        LONG    nIndex = LB_ERR;
        LPTSTR lpID = NULL;    // Name is from MAKEINTRESOURCE()
        if( HIWORD(lpszName) == 0 )
        {
            wsprintf( szBuffer, "Icon [%d]", (DWORD)lpszName );  // 注意,这个lpszName 就是偏移量,我就是不懂,这个参数是怎么传进去的。回头发信问问作者吧。
            lpID = lpszName;
        }
        else
        {
            // Name is string
            lpID = strdup( lpszName );
            wsprintf( szBuffer, "Icon [%s]", lpID );
        }
        // Add it to the listbox
        nIndex = SendDlgItemMessage( (HWND)lParam, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)(szBuffer) );
        // Set the item data to be the name of the resource so we can get it later
        SendDlgItemMessage( (HWND)lParam, IDC_LIST1, LB_SETITEMDATA, (WPARAM)nIndex, (LPARAM)lpID );    return TRUE;
    }http://www.vckbase.com/vckbase/vckbase12/vc/nonctrls/gdi_17/1217001.htm