Changeset 21 in dev for ProjectEditor/IconEditor.cpp


Ignore:
Timestamp:
Dec 29, 2006, 12:25:04 AM (17 years ago)
Author:
dai_9181
Message:

未対応形式のアイコンファイルを開けないようにした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ProjectEditor/IconEditor.cpp

    r3 r21  
    275275        }
    276276        i=GetFileSize(hFile,NULL);
    277         buffer=(char *)GlobalAlloc(GMEM_FIXED,i+1);
     277        buffer=(char *)HeapAlloc(hHeap,0,i+1);
    278278        ReadFile(hFile,buffer,i,&dw,NULL);
    279279        CloseHandle(hFile);
     
    283283        pIconDir=(ICONDIR *)buffer;
    284284        IconNum=pIconDir->idCount;
     285        bool FileOk = true;
    285286        for(i=0;i<IconNum;i++){
    286287            pIconDirEntry=(ICONDIRENTRY *)(buffer+sizeof(ICONDIR)+sizeof(ICONDIRENTRY)*i);
     
    290291
    291292            dwBytesInRes[i]=pIconDirEntry->dwBytesInRes;
     293
     294            //対応チェック
     295            BITMAPINFOHEADER *pBmpInfoHdr=(BITMAPINFOHEADER *)pImageBuffer[i];
     296            if( !(pBmpInfoHdr->biBitCount == 4 || pBmpInfoHdr->biBitCount == 8 ) ){
     297                //16色、256色以外の場合
     298                //未対応
     299                FileOk = false;
     300            }
    292301        }
    293302
     
    295304        lstrcat(str,str2);
    296305        mdic.szTitle=str;
     306
     307        HeapDefaultFree(buffer);
     308
     309        if( !FileOk ){
     310            for(i=0;i<IconNum;i++){
     311                HeapDefaultFree( pImageBuffer[i] );
     312            }
     313
     314            char msg[1024];
     315            sprintf( msg, "\"%s\"\n\n16色または256色以外の形式のファイルには対応していません。", filepath );
     316            MessageBox( hOwner, msg, "ActiveBasic", MB_OK | MB_ICONEXCLAMATION );
     317            return;
     318        }
    297319    }
    298320    else{
Note: See TracChangeset for help on using the changeset viewer.