THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 26/02/2008 at 08:48, xxxxxxxx wrote:
I'm not sure if this is the correct/proper way to do it, but this is how I got it to work...
I have a new class, based on a GeUserArea class... My header file (logo.h) :
#include "c4d.h"
class LogoBmp : public GeUserArea
{
private:
#ifdef _V7SDK_
BaseBitmap *m_pBmp;
#else
AutoAlloc<BaseBitmap> m_pBmp;
#endif
public:
Bool Logoname(char *szName);
virtual void Draw(LONG x1, LONG y1, LONG x2, LONG y2);
};
...the cpp file...
#include "logo.h"
Bool LogoBmp::Logoname(char *szName)
{
#ifdef _V7SDK_
m_pBmp = AllocBaseBitmap();
#endif
if( !m_pBmp || m_pBmp->Init(GeGetPluginPath()+String("res")+String(szName))!=IMAGE_OK )
return false;
return true;
}
void LogoBmp::Draw(LONG x1, LONG y1, LONG x2, LONG y2)
{
LONG wid, hgt;
wid = x2-x1;
hgt = y2-y1;
if( m_pBmp )
DrawBitmap(m_pBmp, x1, y1, wid, hgt, 0, 0, m_pBmp->GetBw(), m_pBmp->GetBh(), BMP_NORMALSCALED | BMP_ALLOWALPHA);
}
...then, in my case, I have 2 USERAREA s **** defined in my dialog's .res file...
// C4D-DialogResource
DIALOG DLG_IMPFILE
{
NAME CAPTION_TEXT; CENTER_V; CENTER_H;
GROUP
{
ALIGN_TOP; CENTER_H;
BORDERSIZE 10, 0, 10, 0;
COLUMNS 1;
SPACE 4, 4;
GROUP
{
CENTER_V; CENTER_H;
BORDERSIZE 10, 10, 10, 10;
COLUMNS 3;
SPACE 4, 4;
**USERAREA IDC_LOGO { CENTER_V; CENTER_H; SIZE 128, 64; }**
GROUP
{
CENTER_V; CENTER_H;
BORDERSIZE 10, 0, 10, 0;
COLUMNS 1;
SPACE 4, 4;
STATICTEXT { NAME IDS_HTX1; CENTER_V; CENTER_H; }
STATICTEXT { NAME IDS_HTX2; CENTER_V; CENTER_H; }
STATICTEXT { NAME IDS_HTX3; CENTER_V; CENTER_H; }
STATICTEXT { NAME IDS_HTX4; CENTER_V; CENTER_H; }
STATICTEXT { NAME IDS_HTX5; CENTER_V; CENTER_H; }
}
**USERAREA IDC_RTLOGO { CENTER_V; CENTER_H; SIZE 128, 64; }**
}
GROUP
{
NAME IDS_DTITLE; FIT_V; SCALE_V; CENTER_H;
BORDERSTYLE BORDER_GROUP_IN; BORDERSIZE 10, 10, 10, 10;
COLUMNS 1;
SPACE 10, 10;
--------------------- S N I P ------------------------
...and finally, my dialog setup code...
class LoadOptsDialog : public GeModalDialog
{
private:
**LogoBmp m_riplogo;
LogoBmp m_tidelogo;
** ObjLoader *ppbj;
public:
LoadOptsDialog(ObjLoader *pbj);
virtual Bool CreateLayout(void);
virtual Bool InitValues(void);
virtual Bool Command(LONG id, const BaseContainer &msg);
virtual Bool AskClose(void);
};
LoadOptsDialog::LoadOptsDialog(ObjLoader *pbj)
{
**m_riplogo.Logoname("redilogo.tif");
m_tidelogo.Logoname("riptide.tif");**
ppbj = pbj;
}
Bool LoadOptsDialog::AskClose(void)
{
return FALSE;
}
Bool LoadOptsDialog::CreateLayout(void)
{
if( !(GeModalDialog::CreateLayout() && LoadDialogResource(DLG_IMPFILE,NULL,0)))
return FALSE;
**AttachUserArea(m_riplogo, IDC_LOGO);
AttachUserArea(m_tidelogo, IDC_RTLOGO);
** return TRUE;
}
---------------------- S N I P ----------------------
...frankly, I no longer remember the particulars about how or why this works, but that's the way it's been in my code for years now :).