⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Windows Mobile好用的今日桌面插件,在桌面插入一个Item项
💻 C
📖 第 1 页 / 共 3 页
字号:
		case IDC_EDIT_WINBOTTOMMARGIN:
			switch(HIWORD(wParam)){
			case EN_SETFOCUS:
				SHSipPreference(hDlg, SIP_UP);
				break;
			case EN_KILLFOCUS:
				SHSipPreference(hDlg, SIP_DOWN);
				break;
			}
			break;

		case IDC_BUTTON_BACKBMP:
			if(SelectFile(hDlg, hInst, NULL, buf) == TRUE){
				SendDlgItemMessage(hDlg, IDC_EDIT_BACKBMP, WM_SETTEXT, 0, (LPARAM)buf);
			}
			break;

		case IDOK:
			//愝掕偺庢摼
			SendDlgItemMessage(hDlg, IDC_EDIT_BACKBMP, WM_GETTEXT, BUF_SIZE - 1, (LPARAM)backbmpfile);
			stretch_backbmp = SendDlgItemMessage(hDlg, IDC_CHECK_STRETCH, BM_GETCHECK, 0, 0);

			IconSize = GetDlgItemInt(hDlg, IDC_EDIT_ICONSIZE, NULL, FALSE);
			HMargin = GetDlgItemInt(hDlg, IDC_EDIT_HMARGIN, NULL, FALSE);
			VMargin = GetDlgItemInt(hDlg, IDC_EDIT_VMARGIN, NULL, FALSE);
			WinLeftMargin = GetDlgItemInt(hDlg, IDC_EDIT_WINLEFTMARGIN, NULL, FALSE);
			WinTopMargin = GetDlgItemInt(hDlg, IDC_EDIT_WINTOPMARGIN, NULL, FALSE);
			WinRightMargin = GetDlgItemInt(hDlg, IDC_EDIT_WINRIGHTMARGIN, NULL, FALSE);
			WinBottomMargin = GetDlgItemInt(hDlg, IDC_EDIT_WINBOTTOMMARGIN, NULL, FALSE);
			EndDialog(hDlg, TRUE);
			break;
		}
		break;

	default:
		return FALSE;
	}
	return TRUE;
}


/******************************************************************************

	EditDlgProc

	愝掕夋柺

******************************************************************************/

static BOOL CALLBACK EditDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	SHINITDLGINFO shidi;
	HWND hListView;
	LV_ITEM lvi;
	TCHAR name[BUF_SIZE];
	TCHAR path[BUF_SIZE];
	TCHAR cmd[BUF_SIZE];
	TCHAR *p, *r;
	static int index;

	switch(uMsg)
	{
	case WM_INITDIALOG:
		//PocketPC梡弶婜壔
		shidi.dwMask = SHIDIM_FLAGS;
		shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN;
		shidi.hDlg = hDlg;
		SHInitDialog(&shidi);

		SetWindowText(hDlg, TEXT("File"));

		index = lParam;
		if(lParam >= 0){
			hListView = GetDlgItem(GetParent(hDlg), IDC_LIST_FILE);

			*name = TEXT('\0');
			ListView_GetItemText(hListView, index, 0, name, BUF_SIZE - 1);
			SendDlgItemMessage(hDlg, IDC_EDIT_NAME, WM_SETTEXT, 0, (LPARAM)name);

			*name = TEXT('\0');
			ListView_GetItemText(hListView, index, 1, name, BUF_SIZE - 1);
			SendDlgItemMessage(hDlg, IDC_EDIT_PATH, WM_SETTEXT, 0, (LPARAM)name);

			*name = TEXT('\0');
			ListView_GetItemText(hListView, index, 2, name, BUF_SIZE - 1);
			SendDlgItemMessage(hDlg, IDC_EDIT_CMD, WM_SETTEXT, 0, (LPARAM)name);
		}
		break;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDC_EDIT_NAME:
		case IDC_EDIT_PATH:
		case IDC_EDIT_CMD:
			switch(HIWORD(wParam)){
			case EN_SETFOCUS:
				SHSipPreference(hDlg, SIP_UP);
				break;
			case EN_KILLFOCUS:
				SHSipPreference(hDlg, SIP_DOWN);
				break;
			}
			break;

		case IDC_BUTTON_FILESELECT:
			if(SelectFile(hDlg, hInst, NULL, path) == TRUE){
				SendDlgItemMessage(hDlg, IDC_EDIT_PATH, WM_SETTEXT, 0, (LPARAM)path);

				if(SendDlgItemMessage(hDlg, IDC_EDIT_NAME, WM_GETTEXTLENGTH, 0, 0) > 0){
					break;
				}
				for(p = r = path; *p != TEXT('\0'); p++){
					if(*p == TEXT('\\')){
						r = p;
					}
				}
				lstrcpy(name, r + 1);
				for(p = name; *p != TEXT('\0') && *p != TEXT('.'); p++);
				*p = TEXT('\0');
				SendDlgItemMessage(hDlg, IDC_EDIT_NAME, WM_SETTEXT, 0, (LPARAM)name);
			}
			break;

		case IDC_BUTTON_CMDSELECT:
			if(SelectFile(hDlg, hInst, NULL, cmd) == TRUE){
				SendDlgItemMessage(hDlg, IDC_EDIT_CMD, WM_SETTEXT, 0, (LPARAM)cmd);
			}
			break;

		case IDCANCEL:
			EndDialog(hDlg, FALSE);
			break;

		case IDOK:
			//愝掕偺庢摼
			*name = TEXT('\0');
			SendDlgItemMessage(hDlg, IDC_EDIT_NAME, WM_GETTEXT, BUF_SIZE - 1, (LPARAM)name);
			*path = TEXT('\0');
			SendDlgItemMessage(hDlg, IDC_EDIT_PATH, WM_GETTEXT, BUF_SIZE - 1, (LPARAM)path);
			if(*name == TEXT('\0') || *path == TEXT('\0')){
				break;
			}
			if(lstrcmp(path, TEXT("\\")) != 0 && *(path + lstrlen(path) - 1) == TEXT('\\')){
				*(path + lstrlen(path) - 1) = TEXT('\0');
			}
			*cmd = TEXT('\0');
			SendDlgItemMessage(hDlg, IDC_EDIT_CMD, WM_GETTEXT, BUF_SIZE - 1, (LPARAM)cmd);

			hListView = GetDlgItem(GetParent(hDlg), IDC_LIST_FILE);
			if(index == -1){
				// 儕僗僩價儏乕偵傾僀僥儉傪捛壛偡傞
				memset(&lvi, 0, sizeof(LVITEM));
				lvi.mask = LVIF_TEXT | LVIF_IMAGE;
				lvi.iItem = ListView_GetItemCount(hListView);
				lvi.iSubItem = 0;
				lvi.pszText = name;
				lvi.cchTextMax = lstrlen(name);
				lvi.iImage = 0;
				index = ListView_InsertItem(hListView, &lvi);
			}else{
				ListView_SetItemText(hListView, index, 0, name);
			}
			ListView_SetItemText(hListView, index, 1, path);
			ListView_SetItemText(hListView, index, 2, cmd);
			EndDialog(hDlg, TRUE);
			break;
		}
		break;

	default:
		return FALSE;
	}
	return TRUE;
}


/******************************************************************************

	SetLvIcon

	儕僗僩價儏乕偵傾僀僐儞傪愝掕

******************************************************************************/

static void SetLvIcon(HWND hListView)
{
	HIMAGELIST SysIconList;
	HIMAGELIST IconList;
	SHFILEINFO  shfi;
	LV_ITEM lvi;
	TCHAR buf[BUF_SIZE];
	int i, cnt;

	IconList = ListView_GetImageList(hListView, LVSIL_SMALL);
	if(IconList == NULL){
		IconList = ImageList_Create(16, 16, ILC_COLOR | ILC_MASK, 0, 0);
	}else{
		ImageList_Remove(IconList, -1);
	}
	ImageList_SetBkColor(IconList, GetSysColor(COLOR_WINDOW));

	//僔僗僥儉僀儊乕僕儕僗僩偺庢摼
	SysIconList = (HIMAGELIST)SHGetFileInfo(TEXT(""), 0, &shfi, sizeof(SHFILEINFO),
		SHGFI_ICON | SHGFI_SMALLICON | SHGFI_SYSICONINDEX);
	if(SysIconList == NULL){
		return;
	}

	cnt = ListView_GetItemCount(hListView);
	for(i = 0; i < cnt; i++){
		*buf = '\0';
		ListView_GetItemText(hListView, i, 1, buf, BUF_SIZE - 1);
		ImageListIconAdd(IconList, SysIconList, 16, NULL, buf);

		memset(&lvi, 0, sizeof(LVITEM));
		lvi.mask = LVIF_IMAGE;
		lvi.iItem = i;
		lvi.iSubItem = 0;
		lvi.iImage = i;
		ListView_SetItem(hListView, &lvi);
	}
	ListView_SetImageList(hListView, IconList, LVSIL_SMALL);
}


/******************************************************************************

	ListView_MoveItem

	儕僗僩價儏乕偺傾僀僥儉傪堏摦

******************************************************************************/

static void ListView_MoveItem(HWND hListView, int SelectItem, int Move, int ColCnt)
{
	LV_ITEM lvi;
	TCHAR buf[3][BUF_SIZE];
	int i = 0;
	int image;

	for(i = 0;i < ColCnt;i++){
		*(*(buf + i)) = '\0';
	}

	for(i = 0;i < ColCnt;i++){
		ListView_GetItemText(hListView, SelectItem, i, *(buf + i), BUF_SIZE - 1);
	}

	memset(&lvi, 0, sizeof(LVITEM));
	lvi.mask = LVIF_IMAGE;
	lvi.iItem = SelectItem;
	lvi.iSubItem = 0;
	lvi.iImage = 0;
	ListView_GetItem(hListView, &lvi);
	image = lvi.iImage;

	ListView_DeleteItem(hListView, SelectItem);

	SelectItem = SelectItem + Move;

	memset(&lvi, 0, sizeof(LVITEM));
	lvi.mask = LVIF_TEXT | LVIF_IMAGE;
	lvi.iItem = SelectItem;
	lvi.iSubItem = 0;
	lvi.pszText = *buf;
	lvi.cchTextMax = lstrlen(*buf);
	lvi.iImage = image;
	ListView_InsertItem(hListView, &lvi);

	for(i = 1;i < ColCnt;i++){
		ListView_SetItemText(hListView, SelectItem, i, *(buf + i));
	}
	ListView_SetItemState(hListView, SelectItem,
		LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
	ListView_EnsureVisible(hListView, SelectItem, TRUE);
}


/******************************************************************************

	CustomItemOptionsDlgProc

	愝掕夋柺

******************************************************************************/

BOOL APIENTRY CustomItemOptionsDlgProc(HWND hDlg, UINT uMsg, UINT wParam, LONG lParam)
{
	SHINITDLGINFO shidi;
	LVCOLUMN lvc;
	LV_ITEM lvi;
	int ItemIndex;
	int i;

	switch(uMsg)
	{
	case WM_INITDIALOG:
		//PocketPC梡弶婜壔
		shidi.dwMask = SHIDIM_FLAGS;
		shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN;
		shidi.hDlg = hDlg;
		SHInitDialog(&shidi);

		SetWindowText(hDlg, TEXT("tdLaunch"));

		//愝掕撉傒崬傒
		GetOption();
		CreateFileList();

		lvc.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
		lvc.fmt = LVCFMT_LEFT;

		lvc.cx = 150;
		lvc.pszText = TEXT("Name");
		lvc.cchTextMax = lstrlen(TEXT("Name"));
		lvc.iSubItem = 0;
		ListView_InsertColumn(GetDlgItem(hDlg, IDC_LIST_FILE), 0, &lvc);

		lvc.cx = 150;
		lvc.pszText = TEXT("File path");
		lvc.cchTextMax = lstrlen(TEXT("Path"));
		lvc.iSubItem = 1;
		ListView_InsertColumn(GetDlgItem(hDlg, IDC_LIST_FILE), 1, &lvc);

		lvc.cx = 100;
		lvc.pszText = TEXT("Command line");
		lvc.cchTextMax = lstrlen(TEXT("Command line"));
		lvc.iSubItem = 2;
		ListView_InsertColumn(GetDlgItem(hDlg, IDC_LIST_FILE), 2, &lvc);

		for(i = 0; i < FileListCnt; i++){
			// 儕僗僩價儏乕偵傾僀僥儉傪捛壛偡傞
			memset(&lvi, 0, sizeof(LVITEM));
			lvi.mask = LVIF_TEXT | LVIF_IMAGE;
			lvi.iItem = ListView_GetItemCount(GetDlgItem(hDlg, IDC_LIST_FILE));
			lvi.iSubItem = 0;
			lvi.pszText = (FileList + i)->Name;
			lvi.cchTextMax = lstrlen((FileList + i)->Name);
			lvi.iImage = 0;
			ItemIndex = ListView_InsertItem(GetDlgItem(hDlg, IDC_LIST_FILE), &lvi);

			ListView_SetItemText(GetDlgItem(hDlg, IDC_LIST_FILE), ItemIndex, 1, (FileList + i)->FileName);
			ListView_SetItemText(GetDlgItem(hDlg, IDC_LIST_FILE), ItemIndex, 2, (FileList + i)->CommnadLine);
		}
		SetLvIcon(GetDlgItem(hDlg, IDC_LIST_FILE));
		break;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDC_BUTTON_ADD:
			DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DIALOG_EDIT), hDlg, EditDlgProc, -1);
			SetLvIcon(GetDlgItem(hDlg, IDC_LIST_FILE));
			SHSipPreference(hDlg, SIP_DOWN);
			break;

		case IDC_BUTTON_EDIT:
			if((i = ListView_GetNextItem(GetDlgItem(hDlg, IDC_LIST_FILE),
				-1, LVNI_FOCUSED | LVIS_SELECTED)) == -1){
				break;
			}
			DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DIALOG_EDIT), hDlg, EditDlgProc, i);
			SetLvIcon(GetDlgItem(hDlg, IDC_LIST_FILE));
			SHSipPreference(hDlg, SIP_DOWN);
			break;

		case IDC_BUTTON_DELETE:
			if(ListView_GetSelectedCount(GetDlgItem(hDlg, IDC_LIST_FILE)) <= 0){
				break;
			}
			if(MessageBox(hDlg, TEXT("Delete select item?"), TEXT("Delete"), MB_ICONQUESTION | MB_YESNO) == IDNO){
				break;
			}
			while((i = ListView_GetNextItem(GetDlgItem(hDlg, IDC_LIST_FILE), -1, LVNI_SELECTED)) != -1){
				ListView_DeleteItem(GetDlgItem(hDlg, IDC_LIST_FILE), i);
			}
			break;

		case IDC_BUTTON_UP:
			if((i = ListView_GetNextItem(GetDlgItem(hDlg, IDC_LIST_FILE), -1, LVNI_SELECTED)) <= 0){
				break;
			}
			ListView_MoveItem(GetDlgItem(hDlg, IDC_LIST_FILE), i, -1, 3);
			break;

		case IDC_BUTTON_DOWN:
			if((i = ListView_GetNextItem(GetDlgItem(hDlg, IDC_LIST_FILE), -1, LVNI_SELECTED)) == -1){
				break;
			}
			if(i == ListView_GetItemCount(GetDlgItem(hDlg, IDC_LIST_FILE)) - 1){
				break;
			}
			ListView_MoveItem(GetDlgItem(hDlg, IDC_LIST_FILE), i, 1, 3);
			break;

		case IDC_BUTTON_OPTION:
			DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DIALOG_OPTION), hDlg, OptionDlgProc, 0);
			SHSipPreference(hDlg, SIP_DOWN);
			break;

		case IDC_BUTTON_UNINSTALL:
			if(MessageBox(hDlg, TEXT("Delete tdLaunch information?"), TEXT("Uninstall"), MB_ICONSTOP | MB_YESNO) == IDYES){
				//tdLaunch儗僕僗僩儕偺嶍彍
				RegDeleteFileList();
				RegDeleteKey(HKEY_CURRENT_USER, REG_PATH);
			}
			if(MessageBox(hDlg, TEXT("Delete today information?"), TEXT("Uninstall"), MB_ICONSTOP | MB_YESNO) == IDYES){
				//today儗僕僗僩儕偺嶍彍
				RegDeleteKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Today\\Items\\tdLaunch"));
				MessageBox(hDlg, TEXT("Information was deleted. Please uninstall."), TEXT("Info"), MB_OK | MB_ICONINFORMATION);
			}
			EndDialog(hDlg, IDOK);
			break;

		case IDOK:
			if(FileList != NULL){
				LocalFree(FileList);
				FileListCnt = 0;
			}
			i = ListView_GetItemCount(GetDlgItem(hDlg, IDC_LIST_FILE));
			FileList = (FILELIST *)LocalAlloc(LPTR, sizeof(FILELIST) * i);
			if(FileList == NULL){
				break;
			}
			FileListCnt = i;

			for(i = 0;i < FileListCnt;i++){
				ListView_GetItemText(GetDlgItem(hDlg, IDC_LIST_FILE), i, 0, (FileList + i)->Name, BUF_SIZE - 1);
				ListView_GetItemText(GetDlgItem(hDlg, IDC_LIST_FILE), i, 1, (FileList + i)->FileName, BUF_SIZE - 1);
				ListView_GetItemText(GetDlgItem(hDlg, IDC_LIST_FILE), i, 2, (FileList + i)->CommnadLine, BUF_SIZE - 1);
				(FileList + i)->Index = i;
			}

			SaveFileList();
			SetOption();

			ListView_DeleteAllItems(GetDlgItem(hDlg, IDC_LIST_FILE));
			ImageList_Destroy((void *)ListView_GetImageList(GetDlgItem(hDlg, IDC_LIST_FILE), LVSIL_SMALL));
			EndDialog(hDlg, IDOK);
			break;
		}
		break;

	default:
		return FALSE;
	}
	return TRUE;
}
/* End of source */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -