Главная / FAQ по Builder'у / 167 Нужно картинку поместить в EXE...

167 Нужно картинку поместить в EXE, чтоб в программе потом использовать. Как такое сделать?


вот как есть...
в rc

/*----------------------------
   RMAP.RC resource script
  ----------------------------*/
//это для произвольных данных
blocks   RMAP  blocks.dmp //это бинарный файл со справочными данными, опред-ой
//cтруктуры
/*blocks - идентификатор (обзывай как хочешь name1 или name2 ...)
RMAP   - тип ресурса*/   (тоже самое ...)
//для bmp
NameBmp1 BITMAP picture.bmp

в hpp

class PACKAGE TRMap : public TCustomGrid
{
public:
    ...
private:
    /*Объявление статических членов-данных общих для всех экземпляров TRMap*/
    static int LockCount;        //счетчик созданных экземпляров класса
    static HGLOBAL hResource;    //описатель ресурса (справочные данные)
   /*статик потому что ими пользуются много экз. класса при работе проги
     загружаю в конструкторе если счетчик 0 (нет ни одного экз.)
     выгружаю в деструкторе если это последний экз. класса*/
    //для получения информации о ячейке...
    TRecordCell* RC;
};
в cpp
int TRMap::LockCount      = 0; //счетчик созданных экземпляров класса...
HGLOBAL TRMap::hResource  = NULL;    //описатель ресурса с данными...

//--------------------------Загрузка ресурса------------------------------//
  if(LockCount == 0) {
    hResource = LoadResource (HInstance, FindResource (HInstance, "blocks",
"RMAP"));
    if(hResource)
        LockCount++;
    else
        throw ("Ошибка...");
  }
  else
    LockCount++;
}
//---------------------------------------------------------------------------
__fastcall TRMap::~TRMap()
{
    LockCount--;
    if(LockCount == 0)
        FreeResource(hResource);
}
//---------------------------------------------------------------------------
использование...
//---------------------------------------------------------------------------
TRecordCell __fastcall TRMap::GetCellInfo(int ARow, int ACol)
{
    //TODO: Add your source code here
    RC = (TRecordCell *) LockResource (hResource);
    return *(RC + FBlock*2600 + ACol + 52*ARow);
}
//---------------------------------------------------------------------------
//использование картинки так
//void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
  try
  {
    Bitmap1->LoadFromResourceName(HInstance, "NameBmp1");
    Canvas->Draw(12,12,Bitmap1);
  }
  catch (...)
  {
    MessageBeep(0);
  }
  delete Bitmap1;
}

Vladimir Fedulov 2:5030/548

Предыдущий вопрос   |  Список вопросов   |   Следующий вопрос

источник      На главную      by jenyok
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz