UserArea Problem

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 02:04, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   11.5 
Platform:   Windows  ;   
Language(s) :   C.O.F.F.E.E  ;

---------
I have added a bitmap suscesfully. But when moving or resizing the dialog , while draging it for some seconds the bitmap DISAPEARS (!?) ... is any why to refresh the bitmap or something so it comes back ? or any way so this bug doesnt happens?

Image showing the bitmap gone:

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 03:16, xxxxxxxx wrote:

Please post your bitmap code showing the problem.

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 03:32, xxxxxxxx wrote:

Thanks, here some parts of the code:

BitmapGUI::Draw(x1, y1, x2, y2)
{
  DrawBitmap(bitmap, 0, 0, GetUserWidth() - 1, GetUserHeight() - 1, x1, y1, x2, y2, BMP_NORMALSCALED);
  return (TRUE);
}

AddBitmap(id, dialog, name, flags, x, y)
{
  dialog->AddUserArea(id, flags, x, y);
  new(BitmapGUI, id, dialog, name);
}

MyDialog::CreateLayout()
{
SetTitle(PLUGIN_NAME);    AddBitmap(MY_BITMAP2, this, "header.png", BFH_CENTER, 0, 0);
return (TRUE);
}

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 03:58, xxxxxxxx wrote:

Does this solve the problem?

  
BitmapGUI::Draw(x1, y1, x2, y2)  
{  
  //to avoid blinking/flickering  
  OffScreenOn();  
  SetClippingRegion(x1,y1,x2,y2);  
  
  DrawBitmap(bitmap, 0, 0, GetUserWidth() - 1, GetUserHeight() - 1, x1, y1, x2, y2, BMP_NORMALSCALED);  
  return (TRUE);  
}  

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 04:12, xxxxxxxx wrote:

I tried that code but same, after some seconds of resizing the windows with button pressed the bitmap just disapears, very weird. :(

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 04:29, xxxxxxxx wrote:

Note I just realized:
If i add a button to add another bitmap
then when i have the bitmap disapearing problem, i execute that code, then I maximize the dialog and the bitmap appears again...Only maximizing it, not while resizing.
That helps to spot the problem?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 07:55, xxxxxxxx wrote:

I don't normally use AddUserArea() because I prefer to use resource files, but with res files you have to use AttachUserArea() to add a user area object to the dialog. Do you have to do the same after adding one in code?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/04/2010 at 08:25, xxxxxxxx wrote:

I only use the AddUserArea and the DrawBitmap , i have no idea how is with res files yet.

Is there a way to update/refresh the dialog? I notice it only refresh/updates when maximinzing, not while dragin/resizing. That can be a start to try to fix the problem.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 27/04/2010 at 08:02, xxxxxxxx wrote:

I am not able to confirm the problem.

Here is my test code, it'a simple dialog with a scalable bitmap user area.

  
// be sure to use a unique ID obtained from www.plugincafe.com  
var PLUGIN_ID = 910000;  
// be sure to use a unique ID obtained from www.plugincafe.com  
  
// global variables  
var bmp;  
var text;  
  
// definition of my user area  
class MyUserArea : GeUserArea  
{  
  public:  
      MyUserArea(id,dialog);  
      Init();  
      GetUserWidth();  
      GetUserHeight();  
  
      Draw(x1,y1,x2,y2);  
}  
  
MyUserArea::MyUserArea(id,dialog)  
{  
  super(id,dialog);  
}  
  
MyUserArea::Init()  
{  
}  
  
MyUserArea::GetUserWidth()  
{  
  return 128;  
}  
  
MyUserArea::GetUserHeight()  
{  
  return 128;  
}  
  
MyUserArea::Draw(x1,y1,x2,y2)  
{  
  OffScreenOn();  
  SetClippingRegion(x1,y1,x2,y2);  
    
  DrawBitmap(bmp, 0, 0, 127, 127, x1, y1, x2, y2, BMP_NORMALSCALED);  
  
}  
  
  
// definition of my Dialog class  
class MyDialog : GeDialog  
{  
  private:  
      var ua;  
  
  public:  
      MyDialog();  
  
      CreateLayout();  
      Init();  
      Command(id,msg);  
}  
  
MyDialog::MyDialog()  
{  
  super(PLUGIN_ID);  
  ua=NULL;  
}  
  
MyDialog::CreateLayout()  
{  
  SetTitle("My Dialog");  
  
  AddUserArea(5000,BFH_SCALEFIT|BFV_SCALEFIT,0,0);  
  
  ua = new(MyUserArea,5000,this);  
  
  return TRUE;  
}  
  
MyDialog::Init()  
{  
}  
  
MyDialog::Command(id,msg)  
{  
//    switch (id)  
  {  
  }  
}  
  
  
class MyMenuPlugin : MenuPlugin  
{  
  public:  
      MyMenuPlugin();  
  
      GetID();  
      GetName();  
      GetHelp();  
      Execute(doc);  
  
      RestoreLayout(secret,subid);  
}  
  
MyMenuPlugin::MyMenuPlugin()  
{  
  super();  
}  
  
MyMenuPlugin::GetID()  
{  
  return PLUGIN_ID;  
}  
  
MyMenuPlugin::GetName()  
{  
  return "My Dialog";  
}  
  
MyMenuPlugin::GetHelp()  
{  
  return "Shows programming of bitmap area";  
}  
  
var d;  
  
MyMenuPlugin::Execute(doc)  
{  
  d->Open(TRUE,-1,-1);  
}  
  
MyMenuPlugin::RestoreLayout(secret,subid)  
{  
  if (!d) d = new(MyDialog);  
  d->RestoreLayout(secret);  
}  
  
  
main()  
{  
  d = new(MyDialog);  
    
  if (!bmp) bmp = new(BaseBitmap, 128, 128);  
  var fn = new(Filename);  
  fn->SetFullString("c:\\testbitmap.tif");  
    
  bmp->Load(fn);  
    
  Register(MyMenuPlugin);  
}  

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 29/04/2010 at 01:54, xxxxxxxx wrote:

Hi Matthias, Your code worked without problems. I love you.
Thanks a lot Sir!