BFM_DRAGRECEIVE, ListView, & Cursor

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

On 06/03/2005 at 16:38, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   8.012 
Platform:   Windows  ; Mac  ;  Mac OSX  ; 
Language(s) :     C++  ;

---------
Questions stacking up! ;0)

For some unknown reason, it is impossible to set the mouse pointer during drag receive operations in my GeDialog's SimpleListView object. Here's the code; what's wrong with it? Is there a different approach for the SimpleListView (that was, perhaps, never illustrated anywhere) :

  
LONG Message(...)  
{  
...  
     // Drag and Drop  
     else if (id == BFM_DRAGRECEIVE)  
     {  
          Bool dropArea = CheckDropArea(IS_MATLISTVIEW, msg, TRUE, TRUE);  
          SetDragDestination((dropArea)?MOUSE_POINT_HAND:MOUSE_FORBIDDEN);  
          if (dropArea)  
          {  
               // Material drop  
               if (msg.GetLong(BFM_DRAG_FINISHED))  
               {  
                    LONG type = 0;  
                    void *object = NULL;  
  
                    GetDragObject(msg, &type;, &object;);  
                    if (object && (type == DRAGTYPE_ATOMARRAY))  
                    {  
                         AtomArray* array = static_cast<AtomArray*>(object);  
                         Atom *atom;  
                         type = array->GetCount();  
                         for (LONG i = 0; i < type; i++)  
                         {  
                              if ((atom = array->GetIndex(i)) && atom->IsInstanceOf(Mmaterial))  
                              {             
                                   Material* mat = static_cast<Material*>(atom);  
                                   /*  
                                   // - Set Item  
                                   BaseContainer data;  
                                   data.SetString('name', "Empty");  
                                   matListView.SetItem(0, data);  
                                   */  
                                   GePrint("Dropped: "+mat->GetName());  
                              }  
                         }  
                         BaseContainer actionmsg(BFM_ACTION), actionresult;  
                         actionmsg.SetLong(BFM_ACTION_ID, IS_MATLISTVIEW);  
                         GeDialog::Message(actionmsg, actionresult);  
                    }          
               }  
          }  
     }  
...  
}  

Yes, there is a return GeDialog::Message(...) at the end of the method.

Thanks and confused.

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

On 06/03/2005 at 22:30, xxxxxxxx wrote:

No need to bother as I've decided on a different approach using a GetDDescription in the PluginMaterial to collect/update and pass all of the Materials to the dialog's listview. Much cleaner. 🙂

But if there is an answer, it may help others who encounter a similar situation.