ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

clb.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.