Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenclb.c
Go to the documentation of this file.
00001 /* 00002 * ReactOS Column List Box 00003 * Copyright (C) 2005 Thomas Weidenmueller 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00018 */ 00019 /* 00020 * PROJECT: ReactOS Column List Box 00021 * FILE: lib/clb/clb.c 00022 * PURPOSE: Column List Box 00023 * PROGRAMMER: Thomas Weidenmueller <w3seek@reactos.com> 00024 * 00025 * UPDATE HISTORY: 00026 * 10/29/2005 Created 00027 */ 00028 #include <precomp.h> 00029 00030 static HINSTANCE hDllInstance; 00031 00032 static const WCHAR ClbClassName[] = L"ColumnListBox"; 00033 static const WCHAR ClbColumns[] = L"Column1;Column2;Column3"; 00034 00035 typedef struct _CLB_PRIVATEDATA 00036 { 00037 HWND hwnd; 00038 } CLB_PRIVATEDATA, *PCLB_PRIVATEDATA; 00039 00040 static const CLBS_INFO ClbsSupportedStyles[] = 00041 { 00042 { 00043 CLBS_NOTIFY, 00044 0x0, 00045 L"CLBS_NOTIFY" 00046 }, 00047 { 00048 CLBS_SORT, 00049 0x0, 00050 L"CLBS_SORT" 00051 }, 00052 { 00053 CLBS_DISABLENOSCROLL, 00054 0x0, 00055 L"CLBS_DISABLENOSCROLL" 00056 }, 00057 { 00058 CLBS_VSCROLL, 00059 0x0, 00060 L"CLBS_VSCROLL" 00061 }, 00062 { 00063 CLBS_BORDER, 00064 0x0, 00065 L"CLBS_BORDER" 00066 }, 00067 { 00068 CLBS_POPOUT_HEADINGS, 00069 0x0, 00070 L"CLBS_POPOUT_HEADINGS" 00071 }, 00072 { 00073 CLBS_SPRINGLY_COLUMNS, 00074 0x0, 00075 L"CLBS_SPRINGLY_COLUMNS" 00076 }, 00077 { 00078 LBS_OWNERDRAWFIXED, 00079 0x0, 00080 L"LBS_OWNERDRAWFIXED" 00081 } 00082 }; 00083 00084 /* 00085 * @unimplemented 00086 */ 00087 DWORD 00088 WINAPI 00089 ClbAddData(IN DWORD Unknown1, 00090 IN DWORD Unknown2, 00091 IN DWORD Unknown3) 00092 { 00093 DPRINT1("ClbAddData(0x%x, 0x%x, 0x%x)\n", Unknown1, Unknown2, Unknown3); 00094 return 0; 00095 } 00096 00097 00098 /* 00099 * @unimplemented 00100 */ 00101 DWORD 00102 WINAPI 00103 ClbSetColumnWidths(IN DWORD Unknown1, 00104 IN DWORD Unknown2, 00105 IN DWORD Unknown3) 00106 { 00107 DPRINT1("ClbSetColumnWidths(0x%x, 0x%x, 0x%x)\n", Unknown1, Unknown2, Unknown3); 00108 return 0; 00109 } 00110 00111 00112 /* 00113 * @unimplemented 00114 */ 00115 LRESULT 00116 CALLBACK 00117 ClbWndProc(IN HWND hwnd, 00118 IN UINT uMsg, 00119 IN WPARAM wParam, 00120 IN LPARAM lParam) 00121 { 00122 PCLB_PRIVATEDATA PrivData; 00123 LRESULT Ret = 0; 00124 00125 DPRINT1("ClbWndProc(0x%p, 0x%x, 0x%p, 0x%p)\n", hwnd, uMsg, wParam, lParam); 00126 00127 PrivData = (PCLB_PRIVATEDATA)GetWindowLongPtr(hwnd, 00128 0); 00129 if (PrivData == NULL && uMsg != WM_CREATE) 00130 { 00131 goto HandleDefMsg; 00132 } 00133 00134 switch (uMsg) 00135 { 00136 case WM_CREATE: 00137 PrivData = HeapAlloc(GetProcessHeap(), 00138 0, 00139 sizeof(CLB_PRIVATEDATA)); 00140 if (PrivData == NULL) 00141 { 00142 Ret = (LRESULT)-1; 00143 break; 00144 } 00145 PrivData->hwnd = hwnd; 00146 break; 00147 00148 case WM_DESTROY: 00149 HeapFree(GetProcessHeap(), 00150 0, 00151 PrivData); 00152 break; 00153 00154 default: 00155 HandleDefMsg: 00156 Ret = DefWindowProc(hwnd, 00157 uMsg, 00158 wParam, 00159 lParam); 00160 break; 00161 } 00162 00163 return Ret; 00164 } 00165 00166 00167 static INT_PTR CALLBACK 00168 ClbpStyleDlgProc(IN HWND hwndDlg, 00169 IN UINT uMsg, 00170 IN WPARAM wParam, 00171 IN LPARAM lParam) 00172 { 00173 INT_PTR Ret = FALSE; 00174 00175 DPRINT1("ClbpStyleDlgProc(0x%p, 0x%x, 0x%p, 0x%p)\n", hwndDlg, uMsg, wParam, lParam); 00176 00177 switch (uMsg) 00178 { 00179 case WM_COMMAND: 00180 switch (LOWORD(wParam)) 00181 { 00182 case IDOK: 00183 case IDCANCEL: 00184 EndDialog(hwndDlg, 00185 (INT_PTR)LOWORD(wParam)); 00186 break; 00187 } 00188 break; 00189 00190 case WM_CLOSE: 00191 EndDialog(hwndDlg, 00192 IDCANCEL); 00193 break; 00194 00195 case WM_INITDIALOG: 00196 Ret = TRUE; 00197 break; 00198 } 00199 00200 return Ret; 00201 } 00202 00203 00204 /* 00205 * @implemented 00206 */ 00207 INT_PTR 00208 WINAPI 00209 ClbStyleW(IN HWND hWndParent, 00210 IN LPARAM dwInitParam) 00211 { 00212 return DialogBoxParam(hDllInstance, 00213 MAKEINTRESOURCE(IDD_COLUMNLISTBOXSTYLES), 00214 hWndParent, 00215 ClbpStyleDlgProc, 00216 dwInitParam); 00217 } 00218 00219 00220 /* 00221 * @implemented 00222 */ 00223 BOOL 00224 WINAPI 00225 CustomControlInfoW(OUT LPCUSTOM_CONTROL_INFO CustomControlInfo OPTIONAL) 00226 { 00227 if (CustomControlInfo != NULL) 00228 { 00229 wcscpy(CustomControlInfo->ClassName, 00230 ClbClassName); 00231 00232 CustomControlInfo->Zero1 = 0; 00233 00234 wcscpy(CustomControlInfo->ClassName2, 00235 ClbClassName); 00236 00237 CustomControlInfo->Unknown1 = 0x60; /* FIXME - ??? */ 00238 CustomControlInfo->Unknown2 = 0x50; /* FIXME - ??? */ 00239 CustomControlInfo->Unknown3 = 0x50A10013; /* FIXME - ??? */ 00240 00241 CustomControlInfo->Zero2 = 0; 00242 CustomControlInfo->Zero3 = 0; 00243 00244 CustomControlInfo->StylesCount = sizeof(ClbsSupportedStyles) / sizeof(ClbsSupportedStyles[0]); 00245 CustomControlInfo->SupportedStyles = ClbsSupportedStyles; 00246 00247 wcscpy(CustomControlInfo->Columns, 00248 ClbColumns); 00249 00250 CustomControlInfo->ClbStyleW = ClbStyleW; 00251 00252 CustomControlInfo->Zero4 = 0; 00253 CustomControlInfo->Zero5 = 0; 00254 CustomControlInfo->Zero6 = 0; 00255 } 00256 00257 return TRUE; 00258 } 00259 00260 BOOL 00261 WINAPI 00262 DllMain(IN HINSTANCE hinstDLL, 00263 IN DWORD dwReason, 00264 IN LPVOID lpvReserved) 00265 { 00266 BOOL Ret = TRUE; 00267 00268 switch (dwReason) 00269 { 00270 case DLL_PROCESS_ATTACH: 00271 { 00272 WNDCLASS ClbWndClass; 00273 00274 hDllInstance = hinstDLL; 00275 00276 InitCommonControls(); 00277 00278 /* register the control's window class */ 00279 ClbWndClass.style = CS_GLOBALCLASS | CS_OWNDC; 00280 ClbWndClass.lpfnWndProc = ClbWndProc; 00281 ClbWndClass.cbClsExtra = 0; 00282 ClbWndClass.cbWndExtra = sizeof(PCLB_PRIVATEDATA); 00283 ClbWndClass.hInstance = hinstDLL, 00284 ClbWndClass.hIcon = NULL; 00285 ClbWndClass.hCursor = LoadCursor(NULL, 00286 (LPWSTR)IDC_ARROW); 00287 ClbWndClass.hbrBackground = NULL; 00288 ClbWndClass.lpszMenuName = NULL; 00289 ClbWndClass.lpszClassName = ClbClassName; 00290 00291 if (!RegisterClass(&ClbWndClass)) 00292 { 00293 Ret = FALSE; 00294 break; 00295 } 00296 break; 00297 } 00298 00299 case DLL_THREAD_ATTACH: 00300 case DLL_THREAD_DETACH: 00301 break; 00302 00303 case DLL_PROCESS_DETACH: 00304 UnregisterClass(ClbClassName, 00305 hinstDLL); 00306 break; 00307 } 00308 return Ret; 00309 } 00310 Generated on Sat May 26 2012 04:16:21 for ReactOS by
1.7.6.1
|