CListCtrl fehlerhaft?
-
Hallo!
Und zwar möchte ich Elemente aus einer CListCtrl auf die Arbeitsfläche ziehen. Dafür benutze ich die CreateDragImage-Methode vom Control und behandle die LVN_BEGINDRAG-Nachricht im Elternfenster.
Hier der entsprechende Quelltext:void templatePane::OnBeginDrag( NMHDR* hdr, LRESULT* res ) { NMLISTVIEW* pListView = reinterpret_cast<NMLISTVIEW*>(hdr); ASSERT(pListView); int dragItem_ = pListView->iItem; CPoint startPoint = pListView->ptAction; CPoint p(0,0); dragList_ = template_ctrl_.CreateDragImage(dragItem_, &p ); ASSERT(dragList_); dragList_->BeginDrag(0, CPoint(40, -20)); dragList_->DragEnter(0, pListView->ptAction); SetCapture(); dragging_ = true; *res = 0; }Leider werden die gedraggten Bilder auf der rechten Seite abgeschnitten, siehe folgenden Screenshot (Der Mauszeiger fehlt, aber das Plus da rechts unten ist das gedragte Bild):
http://img26.imageshack.us/img26/1927/dragproblem.png
Hat jemand eine Ahnung was ich hier falsch mache?
Viele Grüße,
MichaelPS: Titel nur zum Spaß geändert

-
So, ich habe nun herausgefunden, dass SetIconSpacing einen großen Einfluss auf das Ergebnis hat (bei einem x-Spacing von 112 scheint alles so zu sein, wie es soll. Allerdings sind die Elemente dann viel zu weit voneinander entfernt). Ich hatte irgendwie angenommen, dass SetIconSpacing sich nur auf die darstellung ("Rastergröße") des ListCtrl auswirkt. Aber wenn ich das Icon Spacing verändere, dann bewegt sich das zu draggende Icon in dem temporären Drag-Image mit. Ist das zu erwarten? Wie verkleinere ich das Raster sonst?
Viele Grüße,
Michael
-
Hallo!
Ich habe einmal Code zum Speichern der Drag-Bilder eingefügt:
CPoint p(0,0); dragList_ = template_ctrl_.CreateDragImage(dragIndex, &p ); if( !dragList_ ) return; { static bool save_drag_image = true; if( save_drag_image ) { IMAGEINFO imginfo; dragList_->GetImageInfo( 0, &imginfo ); CImage temp; temp.Attach(imginfo.hbmImage); temp.Save( L"./templates/test.png" ); temp.Detach(); save_drag_image = false; } }Hier sind die entsprechenden Ergebnisse für ein horizontales Spacing von 32, 64, 96 und 128 Pixeln:
http://img7.imageshack.us/img7/3339/spacing32.png
http://img7.imageshack.us/img7/5616/spacing64.png
http://img17.imageshack.us/img17/1246/spacing96.png
http://img14.imageshack.us/img14/4914/spacing128.pngVielleicht hilft euch das ja bei dem Erkennen einer Ursache.
Beste Grüße,
Michael