* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
- case 32: C_Depth = ILC_COLOR32; break;
- case 24: C_Depth = ILC_COLOR24; break;
- case 16: C_Depth = ILC_COLOR16; break;
- case 8: C_Depth = ILC_COLOR8; break;
- case 4: C_Depth = ILC_COLOR4; break;
- default: C_Depth = ILC_COLOR; break;
+ case 32: ColorDepth = ILC_COLOR32; break;
+ case 24: ColorDepth = ILC_COLOR24; break;
+ case 16: ColorDepth = ILC_COLOR16; break;
+ case 8: ColorDepth = ILC_COLOR8; break;
+ case 4: ColorDepth = ILC_COLOR4; break;
+ default: ColorDepth = ILC_COLOR; break;
-
- hImgListSmall = ImageList_Create(16,16,C_Depth | ILC_MASK,256,1000);
- hImgListLarge = ImageList_Create(32,32,C_Depth | ILC_MASK,256,1000);
-
-
- while(hFind != INVALID_HANDLE_VALUE)
+
+ hImgListSmall = ImageList_Create(16,16,ColorDepth | ILC_MASK,5,5);
+ hImgListLarge = ImageList_Create(32,32,ColorDepth | ILC_MASK,5,5);
+
+ GetSystemDirectory(pszSearchPath,MAX_PATH);
+ _tcscat(pszSearchPath,_T("\\*.cpl"));
+
+ hFind = FindFirstFile(pszSearchPath,&fd);
+ while (hFind != INVALID_HANDLE_VALUE)
- CPLLISTENTRY *pEntry;
- CTL_DEBUG((_T("Found %s\r\n"),fd.cFileName));
- pEntry = (CPLLISTENTRY*)malloc(sizeof(CPLLISTENTRY));
- if(!pEntry)
- break;
- _tcscpy(pEntry->pszPath,pszSearchPath);
- *_tcsrchr(pEntry->pszPath,'\\')=0;
- _tcscat(pEntry->pszPath,_T("\\"));
- _tcscat(pEntry->pszPath,fd.cFileName);
-
- pEntry->hDLL = LoadLibrary(pEntry->pszPath);
- CTL_DEBUG((_T("Handle %08X\r\n"),pEntry->hDLL));
- pEntry->pFunc = (CPLAPPLETFUNC)GetProcAddress(pEntry->hDLL,"CPlApplet");
- CTL_DEBUG((_T("CPLFunc %08X\r\n"),pEntry->pFunc));
- if(pEntry->pFunc && pEntry->pFunc(hLisCtrl,CPL_INIT,0,0))
+ PCPLLISTENTRY pEntry;
+ CTL_DEBUG((_T("Found %s\r\n"), fd.cFileName));
+
+ _tcscpy(pszPath, pszSearchPath);
+ *_tcsrchr(pszPath, '\\')=0;
+ _tcscat(pszPath, _T("\\"));
+ _tcscat(pszPath, fd.cFileName);
+
+ hDll = LoadLibrary(pszPath);
+ CTL_DEBUG((_T("Handle %08X\r\n"), hDll));
+
+ pFunc = (CPLAPPLETFUNC)GetProcAddress(hDll, "CPlApplet");
+ CTL_DEBUG((_T("CPLFunc %08X\r\n"), pFunc));
+
+ if (pFunc && pFunc(hLisCtrl, CPL_INIT, 0, 0))
- hIcon = LoadImage(pEntry->hDLL,MAKEINTRESOURCE(pEntry->CPLInfo.idIcon),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
+ pEntry = (PCPLLISTENTRY)malloc(sizeof(CPLLISTENTRY));
+ if (pEntry == NULL)
+ return;
+
+ memset(pEntry, 0, sizeof(CPLLISTENTRY));
+ pEntry->hDll = hDll;
+ pEntry->pFunc = pFunc;
+ _tcscpy(pEntry->pszPath, pszPath);
+
+ pEntry->pFunc(hLisCtrl, CPL_INQUIRE, (LPARAM)i, (LPARAM)&pEntry->CplInfo);
+ hIcon = LoadImage(pEntry->hDll,MAKEINTRESOURCE(pEntry->CplInfo.idIcon),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
- hIcon = LoadImage(pEntry->hDLL,MAKEINTRESOURCE(pEntry->CPLInfo.idIcon),IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
+ hIcon = LoadImage(pEntry->hDll,MAKEINTRESOURCE(pEntry->CplInfo.idIcon),IMAGE_ICON,32,32,LR_DEFAULTCOLOR);
- memset(&lvi,0x00,sizeof(lvi));
- lvi.mask=LVIF_TEXT|LVIF_PARAM|LVIF_STATE|LVIF_IMAGE;
- lvi.pszText = Name;
- lvi.state=0;
- lvi.iImage=index;
- lvi.lParam = (LPARAM)pEntry;
- pEntry->nIndex = ListView_InsertItem(hLisCtrl,&lvi);
+ memset(&lvi,0x00,sizeof(lvi));
+ lvi.mask = LVIF_TEXT|LVIF_PARAM|LVIF_STATE|LVIF_IMAGE;
+ lvi.pszText = Name;
+ lvi.state = 0;
+ lvi.iImage = index;
+ lvi.lParam = (LPARAM)pEntry;
+ pEntry->nIndex = ListView_InsertItem(hLisCtrl,&lvi);
- LoadString(pEntry->hDLL,pEntry->CPLInfo.idInfo,Name,MAX_PATH);
- ListView_SetItemText(hLisCtrl,pEntry->nIndex,1,Name);
-
- ListView_SetImageList(hLisCtrl,hImgListSmall,LVSIL_SMALL);
- ListView_SetImageList(hLisCtrl,hImgListLarge,LVSIL_NORMAL);
+ if (LoadString(pEntry->hDll, pEntry->CplInfo.idInfo, Name, MAX_PATH))
+ ListView_SetItemText(hLisCtrl, pEntry->nIndex, 1, Name);
- RECT rect;
- LV_COLUMN column;
- GetClientRect(hWnd,&rect);
- hListView = CreateWindow(WC_LISTVIEW,_T(""),LVS_REPORT | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD | WS_TABSTOP,0,0,rect.right ,rect.bottom,hWnd,NULL,hInst,0);
- CTL_DEBUG((_T("Listview Window %08X\r\n"),hListView));
-
- memset(&column,0x00,sizeof(column));
- column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM|LVCF_TEXT;
- column.fmt=LVCFMT_LEFT;
- column.cx = (rect.right - rect.left) / 3;
- column.iSubItem = 0;
- column.pszText = _T("Name");
- ListView_InsertColumn(hListView,0,&column);
- column.cx = (rect.right - rect.left) - ((rect.right - rect.left) / 3) - 1;
- column.iSubItem = 1;
- column.pszText = _T("Comment");
- ListView_InsertColumn(hListView,1,&column);
- PopulateCPLList(hListView);
- ListView_SetColumnWidth(hListView,2,LVSCW_AUTOSIZE_USEHEADER);
- ListView_Update(hListView,0);
+ RECT rect;
+ LV_COLUMN column;
+
+ GetClientRect(hWnd,&rect);
+ hListView = CreateWindow(WC_LISTVIEW,_T(""),LVS_REPORT | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD | WS_TABSTOP,0,0,rect.right ,rect.bottom,hWnd,NULL,hInst,0);
+ CTL_DEBUG((_T("Listview Window %08X\r\n"),hListView));
+
+ memset(&column,0x00,sizeof(column));
+ column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM|LVCF_TEXT;
+ column.fmt=LVCFMT_LEFT;
+ column.cx = (rect.right - rect.left) / 3;
+ column.iSubItem = 0;
+ column.pszText = _T("Name");
+ ListView_InsertColumn(hListView,0,&column);
+ column.cx = (rect.right - rect.left) - ((rect.right - rect.left) / 3) - 1;
+ column.iSubItem = 1;
+ column.pszText = _T("Comment");
+ ListView_InsertColumn(hListView,1,&column);
+ PopulateCPLList(hListView);
+ ListView_SetColumnWidth(hListView,2,LVSCW_AUTOSIZE_USEHEADER);
+ ListView_Update(hListView,0);
+
+ SetFocus(hListView);
- RECT rect;
- GetClientRect(hWnd,&rect);
- MoveWindow(hListView,0,0,rect.right,rect.bottom,TRUE);
+ RECT rect;
+
+ GetClientRect(hWnd,&rect);
+ MoveWindow(hListView,0,0,rect.right,rect.bottom,TRUE);
- MessageBox(hWnd,_T("No Items in ListView"),_T("Error"),MB_OK|MB_ICONINFORMATION);
- break;
- }
- CTL_DEBUG((_T("Select %d\r\n"),nSelect));
- memset(&lvi,0x00,sizeof(lvi));
- lvi.iItem = nSelect;
- lvi.mask = LVIF_PARAM;
- ListView_GetItem(hListView,&lvi);
- pEntry = (CPLLISTENTRY *)lvi.lParam;
- CTL_DEBUG((_T("Listview DblClk Entry %08X\r\n"),pEntry));
- if(pEntry) {
- CTL_DEBUG((_T("Listview DblClk Entry Func %08X\r\n"),pEntry->pFunc));
- }
- if(pEntry && pEntry->pFunc)
- pEntry->pFunc(hListView,CPL_DBLCLK,pEntry->CPLInfo.lData,0);
+ case NM_RETURN:
+ case NM_DBLCLK:
+ {
+ int nSelect;
+ LV_ITEM lvi;
+ PCPLLISTENTRY pEntry;
+
+ nSelect=SendMessage(hListView,LVM_GETNEXTITEM,(WPARAM)-1,LVNI_FOCUSED);
+
+ if (nSelect==-1)
+ {
+ /* no items */
+ MessageBox(hWnd,_T("No Items in ListView"),_T("Error"),MB_OK|MB_ICONINFORMATION);
+ break;
+ }
+
+ CTL_DEBUG((_T("Select %d\r\n"),nSelect));
+ memset(&lvi,0x00,sizeof(lvi));
+ lvi.iItem = nSelect;
+ lvi.mask = LVIF_PARAM;
+ ListView_GetItem(hListView,&lvi);
+ pEntry = (PCPLLISTENTRY)lvi.lParam;
+ CTL_DEBUG((_T("Listview DblClk Entry %08X\r\n"),pEntry));
+ if (pEntry)
+ {
+ CTL_DEBUG((_T("Listview DblClk Entry Func %08X\r\n"),pEntry->pFunc));
+ }
+
+ if (pEntry && pEntry->pFunc)
+ pEntry->pFunc(hListView,CPL_DBLCLK,pEntry->CplInfo.lData,0);
+ }
RegisterClass(&wc);
InitCommonControls();
hMainWnd = CreateWindowEx(WS_EX_CLIENTEDGE,MYWNDCLASS,_T("Control Panel"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,LoadMenu(hInst,MAKEINTRESOURCE(IDM_MAINMENU)),hInst,0);
RegisterClass(&wc);
InitCommonControls();
hMainWnd = CreateWindowEx(WS_EX_CLIENTEDGE,MYWNDCLASS,_T("Control Panel"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,LoadMenu(hInst,MAKEINTRESOURCE(IDM_MAINMENU)),hInst,0);