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;i49) 
               { 
            		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;icode) 
    		{ 
 
				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;ix) 
      	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