📄 main.c
字号:
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 + -