www.pudn.com > sharewareluncher.zip > LISTVIEW.C
#include#include #include #include #include "sharewareluncher.h" #include "listview.h" #include "resource.h" #define MYWM_TIMEUP (WM_USER+111) void TransDate(int); void ListDel(int); void SortList(void); extern int Runit(BOOL); extern void MakeShortcut(void); extern HWND hAddWnd; extern BOOL bNoLunch; extern HINSTANCE hInst; extern int nAppNum; extern APPINFO aiAppInfo[50]; extern HMENU hMenu,hmenuTrackPopup; extern char szRunCommand[300]; extern BOOL bAddExe,bCreateLink; extern BOOL bDlgRuned,bSheet; extern PROPSHEETPAGE * ps; extern HWND hMainWnd; HWND hListWnd,hBarWnd; int nBarPos[]={212,270,-1}; char szerr[100]; BOOL bAnyChanged=FALSE; int naiIndex=-1; HWND hListAppWnd; #pragma argsused LONG APIENTRY ListWndProc(HWND hWnd,UINT message, WPARAM wParam,LPARAM lParam) { int i,j; REGVALINFO RegInfo[5]; char szSubKey[256]; switch (message) { case WM_INITDIALOG: hListAppWnd=hWnd; bDlgRuned=TRUE; { HWND hItemWnd; hItemWnd=GetDlgItem(hWnd,IDC_OK); if(bSheet) ShowWindow(hItemWnd,SW_HIDE); else ShowWindow(hItemWnd,SW_SHOW); } hListWnd=GetDlgItem(hWnd,IDC_LISTAPP); for (i=0; i < nAppNum; i++) { SendMessage(hListWnd,LB_ADDSTRING,0,(LPARAM)(aiAppInfo[i].szAppName)); SendMessage(hListWnd, LB_SETITEMDATA, SendMessage(hListWnd, LB_FINDSTRING, -1, (LPARAM)(aiAppInfo[i].szAppName)), (LPARAM) i); } if (hListWnd == NULL) MessageBox (NULL, "加载共享软件程序信息时出错!", "出错", MB_OK ); SetFocus(hListWnd); hBarWnd=GetDlgItem(hWnd,IDC_INFOBAR); SendMessage(hBarWnd,SB_SETPARTS,3,(LPARAM)nBarPos); SendMessage(hBarWnd,SB_SETTEXT,(1 | 0),(LPARAM)"运行日期"); if(bSheet) { ps = (PROPSHEETPAGE *)lParam; return (TRUE); } if(bAddExe || bCreateLink) SendMessage(hWnd,WM_COMMAND,IDOK,0); break; case MYWM_TIMEUP: //临时借用 if(bAddExe || bCreateLink) { if(hAddWnd==NULL) SendMessage(hWnd,WM_COMMAND,IDOK,0); else SendMessage(hAddWnd,WM_INITDIALOG,0,0); } break; case MYWM_ICON: //临时借用 if(bAnyChanged) { bAnyChanged=FALSE; SortList(); for(i=0;i 49) { Errmsg("抱歉,你已不能再添加程序"); if(bAddExe || bCreateLink) { if(!bSheet || !bNoLunch) SendMessage(hWnd,WM_COMMAND,IDC_OK,0); else bCreateLink=bAddExe=FALSE; } break; } if(DialogBox(hInst,MAKEINTRESOURCE(IDD_ADD),hWnd,(DLGPROC)AddDlgProc)) { MENUITEMINFO mi; bAnyChanged=TRUE; SendMessage(hListWnd,LB_ADDSTRING,0,(LPARAM)aiAppInfo[nAppNum-1].szAppName); SendMessage(hListWnd, LB_SETITEMDATA, SendMessage(hListWnd, LB_FINDSTRING, -1, (LPARAM)(aiAppInfo[nAppNum-1].szAppName)), (LPARAM) (nAppNum-1)); mi.cbSize=sizeof(mi); mi.fMask=MIIM_TYPE | MIIM_ID; mi.fType=MFT_STRING; mi.fState=MFS_DEFAULT; mi.wID=11000+nAppNum-1; mi.dwTypeData=aiAppInfo[nAppNum-1].szAppName; mi.cch=strlen(aiAppInfo[nAppNum-1].szAppName); InsertMenuItem(hmenuTrackPopup,nAppNum-1,TRUE,&mi); if(nAppNum==1) { mi.fType=MFT_SEPARATOR; InsertMenuItem(hmenuTrackPopup,CM_SETCLOCK,FALSE,&mi); } } if(bAddExe || bCreateLink) { if(!bSheet || !bNoLunch) SendMessage(hWnd,WM_COMMAND,IDC_OK,0); else bCreateLink=bAddExe=FALSE; } SendMessage(hWnd,MYWM_ICON,0,0); break; case IDCANCEL: i=SendMessage(hListWnd,LB_GETCURSEL,0,0); if(i==LB_ERR) break; j=SendMessage(hListWnd, LB_GETITEMDATA, i, (LPARAM) 0); wsprintf(szerr,"如果删除\"%s\"程序,你将不能通过本软件启动该程序。\n确实要删除吗?",aiAppInfo[j].szAppName); if(MessageBox(hWnd,szerr,"确认删除",MB_OKCANCEL | MB_ICONQUESTION)==IDCANCEL) break; SendMessage(hListWnd,LB_DELETESTRING,i,0L); nAppNum--; ListDel(j); bAnyChanged=TRUE; SendMessage(hBarWnd,SB_SETTEXT,(0 | 0),(LPARAM)" "); SendMessage(hBarWnd,SB_SETTEXT,(2 | 0),(LPARAM)" "); RemoveMenu(hmenuTrackPopup,11000+j,MF_BYCOMMAND); if(nAppNum==0) RemoveMenu(hmenuTrackPopup,0,MF_BYPOSITION); //DrawMenuBar(hmenuTrackPopup); SendMessage(hWnd,MYWM_ICON,0,0); break; case IDHELP: //ListDel(); i=SendMessage(hListWnd,LB_GETCURSEL,0,0); if(i==LB_ERR) break; naiIndex=SendMessage(hListWnd, LB_GETITEMDATA, i, (LPARAM) 0); if(DialogBox(hInst,MAKEINTRESOURCE(IDD_ADD),hWnd,(DLGPROC)AddDlgProc)) { MENUITEMINFO mi; bAnyChanged=TRUE; SendMessage(hListWnd,LB_DELETESTRING,i,0L); SendMessage(hListWnd,LB_ADDSTRING,0,(LPARAM)aiAppInfo[naiIndex].szAppName); SendMessage(hListWnd, LB_SETITEMDATA, SendMessage(hListWnd, LB_FINDSTRING, -1, (LPARAM)(aiAppInfo[naiIndex].szAppName)), (LPARAM) naiIndex); SendMessage(hBarWnd,SB_SETTEXT,(0 | 0),(LPARAM)" "); SendMessage(hBarWnd,SB_SETTEXT,(2 | 0),(LPARAM)" "); mi.cbSize=sizeof(mi); mi.fMask=MIIM_TYPE | MIIM_ID; mi.fType=MFT_STRING; mi.fState=MFS_DEFAULT; mi.wID=11000+naiIndex; mi.dwTypeData=aiAppInfo[naiIndex].szAppName; mi.cch=strlen(aiAppInfo[naiIndex].szAppName); SetMenuItemInfo(hmenuTrackPopup,11000+naiIndex,FALSE,&mi); //DrawMenuBar(hmenuTrackPopup); naiIndex=-1; SendMessage(hWnd,MYWM_ICON,0,0); } break; case IDC_OK: SendMessage(hWnd,MYWM_ICON,0,0); bDlgRuned=FALSE; if(bAddExe) { for(i=0;i code) { case PSN_SETACTIVE: bDlgRuned=TRUE; bSheet=TRUE; SetFocus(hListWnd); break; case PSN_APPLY: SendMessage(hWnd,MYWM_ICON,0,0); bDlgRuned=FALSE; bSheet=FALSE; SetWindowLong(hMainWnd, GWL_STYLE, GetWindowLong(hMainWnd,GWL_STYLE)); ShowWindow(hMainWnd, SW_SHOW); SetWindowLong(hWnd,DWL_MSGRESULT, FALSE); return TRUE; case PSN_KILLACTIVE: bSheet=FALSE; SetWindowLong(hWnd,DWL_MSGRESULT, FALSE); return (TRUE); case PSN_RESET: bDlgRuned=FALSE; bSheet=FALSE; break; case PSN_HELP: break; } default: return FALSE; } return FALSE; } void TransDate(int i) { if(aiAppInfo[i].stVrDate.wMonth<10) wsprintf(szerr,"0%d/",aiAppInfo[i].stVrDate.wMonth); else wsprintf(szerr,"%d/",aiAppInfo[i].stVrDate.wMonth); if(aiAppInfo[i].stVrDate.wDay<10) wsprintf(szerr,"%s0%d/%4d",szerr,aiAppInfo[i].stVrDate.wDay,aiAppInfo[i].stVrDate.wYear); else wsprintf(szerr,"%s%d/%4d",szerr,aiAppInfo[i].stVrDate.wDay,aiAppInfo[i].stVrDate.wYear); if(aiAppInfo[i].stVrDate.wYear==0 || aiAppInfo[i].stVrDate.wMonth==0 || aiAppInfo[i].stVrDate.wDay==0) wsprintf(szerr,"无"); } void ListDel(int x) { int i,j; char szSubKeyname[256]; REGVALINFO r; for(i=x;i x) SendMessage(hListWnd,LB_SETITEMDATA,i,(LPARAM)(j-1)); } } void SortList(void) { int i,j,pi[50]; APPINFO aiTemp,aiSort; MENUITEMINFO mi; for(i=0;i