|
크허 자문 자답입니다...
불철주야 3일만에 답을 올립니다
ImagesList = new TImageList (this);
ImagesList -> AllocBy = 7;
ImagesList -> ShareImages = true;
Graphics::TBitmap *bmp = new Graphics::TBitmap();
try{
bmp->LoadFromResourceID((int)Sysinit::HInstance,IDB_MYDRV);
LargeImageList->Add(bmp,bmp);
bmp->LoadFromResourceID((int)Sysinit::HInstance,IDB_MY16DRV);
SmallImageList->Add(bmp,bmp);
bmp->FreeImage();
}
catch(...){ MessageBeep(MB_ICONEXCLAMATION);}
delete bmp;
이거 입니다....
T.T
리소스 화일에서 불르는 방식으루 해결 했져....
물론 고급스런 방법두 많겠지만 ..
그럭저럭 이거라두 .....
이 사이트를 사랑 합니다... ^^;;
김봉만 님이 쓰신 글 :
:
: TImageList *SmallImageList = new TImageList(this);
: TImageList *LargeImageList = new TImageList(this);
:
: SmallImageList->ShareImages = true;
: LargeImageList->ShareImages = true;
: SmallImageList->Handle = SHGetFileInfo("", 0, &IconInfo, sizeof(IconInfo),
: SHGFI_ICON | SHGFI_SMALLICON |
: SHGFI_SYSICONINDEX);
: LargeImageList->Handle = SHGetFileInfo("", 0, &IconInfo, sizeof(IconInfo),
: SHGFI_ICON | SHGFI_LARGEICON |
: SHGFI_SYSICONINDEX);
:
: 팁 트릭 란의 비트맵에서 아이콘 읽기 를 참조 하다가 잘 안되서 질문 올립니다...
:
: 위의 소스는 시스템의 이미지 리스트 입니다....
:
: 이렇게 하니깐 구해 지더군여....
:
: 팁란의 방식대로 하면 추가가 잘 되는데...
:
: 화일에서 읽어서 넣을려구하면 치명적 에러로 리부팅을 해야 합니다 T.T
:
: 도와 주소서....
:
: 코맨트가 마나서 지저분해 보이는것은 지난 이틀간의 눈물입니다.....-.-
:
:
: 다음은 제가 시도한 여러가지 입니다
:
:
: /*
: char tmp[5];
: sprintf(tmp,"%d",LargeImageList -> Count );
: ShowMessage (tmp);
:
:
:
: int IconSizeX = GetSystemMetrics(SM_CXICON); SM_CXICONSPACING, SM_CYICONSPACING
: int IconSizeY = GetSystemMetrics(SM_CYICON); SM_CXICON,SM_CYICON
:
: int IconSmallSizeX = GetSystemMetrics(SM_CXSMICON); SM_CXSMICON,SM_CYSMICON
: int IconSmallSizeY = GetSystemMetrics(SM_CYSMICON);
:
: TIcon *NewIcon = ExtractIcon(HInstance, "파일의 전체경로", 0);
: ImageList1->AddIcon(NewIcon);
: UINT ExtractIconEx(
: LPCTSTR lpszFile, // file name
: int nIconIndex, // icon index
: HICON *phiconLarge, // large icon array
: HICON *phiconSmall, // small icon array
: UINT nIcons // number of icons to extract
: );
:
:
: BOOL DestroyIcon(
: HICON hIcon // handle to icon
: );
: */
: TIcon *NewIcon = new TIcon;
: TIcon *NewSmallIcon = new TIcon;
: // TIcon *ret = new TIcon;
: HICON * a = new HICON;
: HICON * b = new HICON;
:
: char tmp[55];
: sprintf(tmp,"big:%d small:%d",LargeImageList -> Count ,SmallImageList -> Count);
: ShowMessage (tmp);
: /*
: int sx,sy;
: ImageList_GetIconSize(LargeImageList,&sx,&sy);
: sprintf(tmp,"big:%d small:%d",sx,sy);
: ShowMessage (tmp);
:
: ImageList_GetIconSize(SmallImageList ,&sx,&sy);
: sprintf(tmp,"big:%d small:%d",sx,sy);
: ShowMessage (tmp);
: */
:
: // int ret = ExtractIconEx("C:\\Program Files\\Borland\\CBuilder3\\Lib\\res\\my.ico",
: int ret = ExtractIconEx("C:\\Program Files\\WinZip\\winzip32.exe",
: 0,
: a,//NewIcon->Handle,
: b,//NewSmallIcon->Handle,
: 1);
: sprintf(tmp,"%d",ret);
: ShowMessage (tmp);
: if ( 1)
: {
: NewIcon->Handle = a,
: NewSmallIcon->Handle = b,
:
: LargeImageList ->AddIcon(NewIcon);
: SmallImageList ->AddIcon(NewSmallIcon);
: }
: sprintf(tmp,"big:%d small:%d",LargeImageList -> Count ,SmallImageList -> Count);
: ShowMessage (tmp);
: // delete NewIcon;
: // delete NewSmallIcon;
:
: // Create the "And" mask
: int IconSizeX = GetSystemMetrics(SM_CXICON); // SM_CXICONSPACING, SM_CYICONSPACING
: int IconSizeY = GetSystemMetrics(SM_CYICON); //SM_CXICON,SM_CYICON
:
: int IconSmallSizeX = GetSystemMetrics(SM_CXSMICON); // SM_CXSMICON,SM_CYSMICON
: int IconSmallSizeY = GetSystemMetrics(SM_CYSMICON);
:
: Graphics::TBitmap * AndMask = new Graphics::TBitmap;
: AndMask->LoadFromFile("C:\\Program Files\\Borland\\CBuilder3\\Lib\\res\\my.ico");
: // AndMask->Monochrome = true;
: AndMask->Width = IconSmallSizeX;
: AndMask->Height = IconSmallSizeY;
: // Draw on the "And" mask
: // AndMask->Canvas->Brush->Color = clBlue;
: // AndMask->Canvas->FillRect(Rect(0, 0, IconSizeX, IconSizeY));
: // AndMask->Canvas->Brush->Color = clBlack;
: // AndMask->Canvas->Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);
:
: // Draw as a test
: // Create the "XOr" mask
: Graphics::TBitmap * XOrMask = new Graphics::TBitmap;
: XOrMask->LoadFromFile("C:\\Program Files\\Borland\\CBuilder3\\Lib\\res\\my.ico") ;
:
: XOrMask->Width = IconSmallSizeX;
: XOrMask->Height = IconSmallSizeY;
: // Draw on the "XOr" mask
: // XOrMask->Canvas->Brush->Color = clBlack;
: // XOrMask->Canvas->FillRect(Rect(0, 0, IconSizeX, IconSizeY));
: // XOrMask->Canvas->Pen->Color = clRed;
: // XOrMask->Canvas->Brush->Color = clRed;
: // XOrMask->Canvas->Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);
:
: // Draw as a test
:
: // Create a icon
: TIcon * Icon = new TIcon;
: TIconInfo IconInfo2;
: IconInfo2.fIcon = true;
: IconInfo2.xHotspot = 0;
: IconInfo2.yHotspot = 0;
: IconInfo2.hbmMask = AndMask->Handle;
: IconInfo2.hbmColor = XOrMask->Handle;
: Icon->Handle = CreateIconIndirect(&IconInfo2);
:
: // if ( (LargeImageList -> Count) != 469 )
:
: // TIcon * Icon = new TIcon;
: // Icon->LoadFromFile("C:\\Program Files\\Borland\\CBuilder3\\Lib\\res\\tmp.bmp");
: // LargeImageList ->AddIcon(Icon);
: SmallImageList ->AddIcon(Icon);
:
: sprintf(tmp,"big:%d small:%d",LargeImageList -> Count ,SmallImageList -> Count);
: ShowMessage (tmp);
:
: // Destroy the temporary bitmaps
: delete AndMask;
: delete XOrMask;
: // Free the icon
: delete Icon;
: /*
: sprintf(tmp,"%d",LargeImageList -> Count );
: ShowMessage (tmp);
: */
:
|