Уроки Iczelion'а


         

Внутри обработчика WM_CREATE вы создаете


invoke SendMessage,hwndTreeView,TVM_INSERTITEM,0,addr tvinsert .elseif uMsg==WM_MOUSEMOVE .if DragMode==TRUE mov eax,lparam
and eax,0ffffh mov ecx,lparam shr ecx,16 mov tvhit.pt.x,eax
mov tvhit.pt.y,ecx invoke ImageList_DragMove,eax,ecx invoke ImageList_DragShowNolock,FALSE invoke SendMessage,hwndTreeView,TVM_HITTEST,NULL,addr tvhit
.if eax!=NULL invoke SendMessage,hwndTreeView,TVM_SELECTITEM,\ TVGN_DROpHILITE,eax .endif
invoke ImageList_DragShowNolock,TRUE .endif .elseif uMsg==WM_LBUTTONUp .if DragMode==TRUE
invoke ImageList_DragLeave,hwndTreeView invoke ImageList_EndDrag invoke ImageList_Destroy,hDragImageList invoke
SendMessage,hwndTreeView,TVM_GETNEXTITEM,TVGN_DROpHILITE,0 invoke SendMessage,hwndTreeView,TVM_SELECTITEM,TVGN_CARET,eax invoke SendMessage,hwndTreeView,TVM_SELECTITEM,TVGN_DROpHILITE,0
invoke ReleaseCapture mov DragMode,FALSE .endif .elseif uMsg==WM_NOTIFY
mov edi,lparam assume edi:ptr NM_TREEVIEW .if [edi].hdr.code==TVN_BEGINDRAG invoke
SendMessage,hwndTreeView,TVM_CREATEDRAGIMAGE,0,[edi].itemNew.hItem mov hDragImageList,eax invoke ImageList_BeginDrag,hDragImageList,0,0,0 invoke
ImageList_DragEnter,hwndTreeView,[edi].ptDrag.x,[edi].ptDrag.y invoke SetCapture,hWnd mov DragMode,TRUE .endif
assume edi:nothing .elseif uMsg==WM_DESTROY invoke postQuitMessage,NULL .else
invoke DefWindowproc,hWnd,uMsg,wparam,lparam ret .endif xor eax,eax
ret Wndproc endp end start
Анализ:
Внутри обработчика WM_CREATE вы создаете контрол tree view.
invoke CreateWindowEx,NULL,ADDR TreeViewClass,NULL,\ WS_CHILD+WS_VISIBLE+TVS_HASLINES+TVS_HASBUTTONS+\ TVS_LINESATROOT,0,\ 0,200,400,hWnd,NULL,\ hInstance,NULL
Обратите внимание на стили. TVS_xxxx - это стили, присущие tree view.
invoke ImageList_Create,16,16,ILC_COLOR16,2,10 mov hImageList,eax invoke LoadBitmap,hInstance,IDB_TREE mov hBitmap,eax invoke ImageList_Add,hImageList,hBitmap,NULL invoke DeleteObject,hBitmap invoke SendMessage,hwndTreeView,TVM_SETIMAGELIST,0,hImageList
Затем вы создаете пустой image list, который будет принимать изображения размером 16x16 пикселей и с глубиной цвета 16 бит. Вначале он будет содержать 2 изображения, но будет расширен до 10, если это потребуется. Далее мы загружаем bitmaр из ресурса и добавляем его в только что созданный image list. После этого мы удаляем хэндл битмапа, так как он больше нам не нужен. Как только image list готов, мы ассоциируем его с tree view, посылая ему TVM_SETIMAGELIST.

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий