Changeset 7175 for trunk/src/comctl32/draglist.cpp
- Timestamp:
- Oct 23, 2001, 11:42:23 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/draglist.cpp
r3182 r7175 1 /* $Id: draglist.cpp,v 1. 2 2000-03-21 17:30:41 cbratschiExp $ */1 /* $Id: draglist.cpp,v 1.3 2001-10-23 21:42:23 sandervl Exp $ */ 2 2 /* 3 3 * Drag List control … … 17 17 18 18 #include "commctrl.h" 19 #include <winnt.h> 19 20 #include <misc.h> 20 21 21 22 static DWORD dwLastScrollTime = 0; 22 23 24 extern LPSTR COMCTL32_aSubclass; /* global subclassing atom */ 23 25 24 BOOL WINAPI MakeDragList (HWND hwndLB) 25 { 26 dprintf(("COMCTL32: MakeDragList - empty stub!")); 27 28 return FALSE; 29 } 30 26 typedef struct { 27 WNDPROC lpOldWindowProc; 28 BOOL isUnicode; 29 UINT uMsg; 30 } DRAGLIST_INFO, *LPDRAGLIST_INFO; 31 31 32 32 VOID WINAPI DrawInsert (HWND hwndParent, HWND hwndLB, INT nItem) … … 93 93 DRAGLIST_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 94 94 { 95 LPDRAGLIST_INFO lpDragInfo; 96 LRESULT ret; 97 DRAGLISTINFO draglist; 95 98 96 return FALSE; 99 lpDragInfo = (LPDRAGLIST_INFO)GetPropA(hwnd, (LPCSTR)COMCTL32_aSubclass); 100 if(!lpDragInfo) { 101 if(lpDragInfo->isUnicode) { 102 return DefWindowProcW(hwnd, uMsg, wParam, lParam); 103 } 104 else return DefWindowProcA(hwnd, uMsg, wParam, lParam); 105 } 106 switch(uMsg) { 107 case WM_LBUTTONDOWN: 108 draglist.uNotification = DL_BEGINDRAG; 109 draglist.hWnd = hwnd; 110 draglist.ptCursor.x = LOWORD(lParam); 111 draglist.ptCursor.y = HIWORD(lParam); 112 ret = SendMessageA(GetParent(hwnd), (UINT)lpDragInfo->uMsg, GetWindowLongA(hwnd, GWL_ID), (LPARAM)&draglist); 113 goto defaultmsg; //correct? 114 115 case WM_NCDESTROY: 116 if(lpDragInfo->isUnicode) { 117 ret = CallWindowProcW(lpDragInfo->lpOldWindowProc, hwnd, uMsg, wParam, lParam); 118 } 119 else ret = CallWindowProcA(lpDragInfo->lpOldWindowProc, hwnd, uMsg, wParam, lParam); 120 121 SetWindowLongA(hwnd, GWL_WNDPROC, (LONG)lpDragInfo->lpOldWindowProc); 122 SetPropA(hwnd, (LPCSTR)COMCTL32_aSubclass, NULL); 123 COMCTL32_Free(lpDragInfo); 124 break; 125 126 defaultmsg: 127 default: 128 if(lpDragInfo->isUnicode) { 129 return CallWindowProcW(lpDragInfo->lpOldWindowProc, hwnd, uMsg, wParam, lParam); 130 } 131 else return CallWindowProcA(lpDragInfo->lpOldWindowProc, hwnd, uMsg, wParam, lParam); 132 } 133 return 0; 97 134 } 135 136 BOOL WINAPI MakeDragList (HWND hwndLB) 137 { 138 LPDRAGLIST_INFO lpDragInfo; 139 140 dprintf(("COMCTL32: MakeDragList %x - partly implemented", hwndLB)); 141 142 lpDragInfo = (LPDRAGLIST_INFO)COMCTL32_Alloc(sizeof(DRAGLIST_INFO)); 143 if(SetPropA(hwndLB, (LPCSTR)COMCTL32_aSubclass, (HANDLE)lpDragInfo) == FALSE) { 144 COMCTL32_Free(lpDragInfo); 145 return FALSE; 146 } 147 lpDragInfo->lpOldWindowProc = (WNDPROC)SetWindowLongA(hwndLB, GWL_WNDPROC, (LONG)DRAGLIST_WindowProc); 148 lpDragInfo->isUnicode = IsWindowUnicode(hwndLB); 149 lpDragInfo->uMsg = RegisterWindowMessageA(DRAGLISTMSGSTRINGA); 150 return TRUE; 151 }
Note:
See TracChangeset
for help on using the changeset viewer.