📄 introductionwizard.cpp
字号:
{
case IDC_CAPTION1:
case IDC_CAPTION2:
{
HFONT font, oldFont;
LOGFONT lf;
GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf);
lf.lfWeight = FW_BOLD;
font = CreateFontIndirect(&lf);
oldFont = (HFONT)SelectObject(dis->hDC, font);
RECT clientRect;
GetClientRect(dis->hwndItem, &clientRect);
const char* caption;
if(ctrlId == IDC_CAPTION1)
caption = kCaption1;
else if(ctrlId == IDC_CAPTION2)
caption = kCaption2;
DrawText(dis->hDC,
caption,
strlen(caption),
&clientRect,
DT_LEFT|DT_WORDBREAK);
SelectObject(dis->hDC, oldFont);
DeleteObject(font);
break;
}
case IDC_TEXT1:
case IDC_TEXT2:
{
HFONT font, oldFont;
font = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
oldFont = (HFONT)SelectObject(dis->hDC, font);
RECT clientRect;
GetClientRect(dis->hwndItem, &clientRect);
const char* text;
if(ctrlId == IDC_TEXT1)
text = kMsg1;
else if(ctrlId == IDC_TEXT2)
text = kMsg2;
DrawText(dis->hDC,
text,
strlen(text),
&clientRect,
DT_LEFT|DT_WORDBREAK);
SelectObject(dis->hDC, oldFont);
DeleteObject(font);
break;
}
}
break;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_DRIVES:
{
if(HIWORD(wParam) == CBN_CLOSEUP)
{
HWND hwndCombo = (HWND) lParam;
char temp[MAX_PATH];
int32 sel = ComboBox_GetCurSel(hwndCombo);
ComboBox_GetText( hwndCombo,
temp,
MAX_PATH);
HWND hwndDirectory = GetDlgItem(hwnd, IDC_DIRECTORY);
HWND hwndBrowse = GetDlgItem(hwnd, IDC_BROWSE);
BOOL enable = strcmp(temp, "All Drives");
if(!enable)
strcpy(temp, "All Folders");
else
sprintf(temp, "%s\\", temp);
Edit_SetText(hwndDirectory, temp);
//EnableWindow(hwndText, enable);
//EnableWindow(hwndDirectory, enable);
EnableWindow(hwndBrowse, enable);
}
break;
}
case IDC_DIRECTORY:
{
/*if(HIWORD(wParam) == EN_CHANGE)
{
char temp[MAX_PATH];
HWND hwndEdit = (HWND) lParam;
Edit_GetText( hwndEdit,
temp,
MAX_PATH);
}*/
break;
}
case IDC_BROWSE:
{
LPMALLOC pMalloc;
if(SUCCEEDED(SHGetMalloc(&pMalloc)))
{
HWND hwndDrives = GetDlgItem(hwnd, IDC_DRIVES);
HWND hwndDirectory = GetDlgItem(hwnd, IDC_DIRECTORY);
char temp[MAX_PATH];
LPITEMIDLIST pidlDrive;
// get the PIDL for this dir and set the root
LPSHELLFOLDER desktop;
if(SUCCEEDED(SHGetDesktopFolder(&desktop)))
{
OLECHAR drive[MAX_PATH];
OLECHAR path[MAX_PATH];
ULONG eaten;
LPITEMIDLIST pidlPath;
ComboBox_GetText(hwndDrives,
temp,
MAX_PATH);
strcat(temp, "\\");
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp,
-1, drive, sizeof(drive));
desktop->ParseDisplayName(hwnd, NULL, drive, &eaten, &pidlDrive, NULL);
Edit_GetText(hwndDirectory,
temp,
MAX_PATH);
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp,
-1, path, sizeof(path));
desktop->ParseDisplayName(hwnd, NULL, path, &eaten, &pidlPath, NULL);
BROWSEINFO bi;
LPITEMIDLIST browseId;
char displayName[MAX_PATH + 1];
bi.hwndOwner = hwnd;
bi.pidlRoot = pidlDrive;
bi.pszDisplayName = displayName;
bi.lpszTitle = "Please select the folder in which you want to search.";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = BrowseCallbackProc;
bi.lParam = (LPARAM)pidlPath;
browseId = SHBrowseForFolder(&bi);
if(browseId)
{
SHGetPathFromIDList(browseId, temp);
Edit_SetText(hwndDirectory, temp);
pMalloc->Free(browseId);
}
// clean up
if(pidlPath)
pMalloc->Free(pidlPath);
if(pidlDrive)
pMalloc->Free(pidlDrive);
desktop->Release();
}
}
break;
}
}
break;
}
case WM_NOTIFY:
{
switch(((NMHDR*)lParam)->code)
{
case PSN_KILLACTIVE:
{
SetWindowLong(hwnd, DWL_MSGRESULT, FALSE);
result = TRUE;
break;
}
case PSN_RESET:
{
SetWindowLong(hwnd, DWL_MSGRESULT, FALSE);
break;
}
case PSN_SETACTIVE:
{
PropSheet_SetWizButtons(GetParent(hwnd), PSWIZB_BACK | PSWIZB_FINISH);
//HWND hwndFinish = GetDlgItem(GetParent(hwnd), 3025);
HWND hwndFinish = FindWindowEx(GetParent(hwnd), NULL, NULL, "Finish");
SetWindowText(hwndFinish, "Search");
break;
}
case PSN_WIZFINISH:
{
HWND hwndDrives = GetDlgItem(hwnd, IDC_DRIVES);
HWND hwndDirectory = GetDlgItem(hwnd, IDC_DIRECTORY);
char temp[MAX_PATH];
ComboBox_GetText(hwndDrives,
temp,
MAX_PATH);
BOOL allDrives = !strcmp(temp, "All Drives");
if(allDrives)
{
DWORD dwDrives;
char *szDrive = "X:\\";
int32 i, ret;
dwDrives = GetLogicalDrives();
for(i = 0; i < sizeof(DWORD) * 8; i++)
{
if (dwDrives & (1 << i))
{
szDrive[0] = 'A' + i;
ret = GetDriveType(szDrive);
if (ret != DRIVE_CDROM && ret != DRIVE_REMOVABLE)
{
searchPaths->push_back(szDrive);
}
}
}
}
else
{
Edit_GetText(hwndDirectory,
temp,
MAX_PATH);
searchPaths->push_back(temp);
}
break;
}
case PSN_WIZBACK:
{
break;
}
}
break;
}
}
return result;
}
bool MusicBrowserUI::IntroductionWizard(vector<string>* searchPaths)
{
PROPSHEETPAGE psp[2];
PROPSHEETHEADER psh;
HINSTANCE hinst = (HINSTANCE)GetWindowLong(m_hWnd, GWL_HINSTANCE);
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags = 0;
psp[0].hInstance = hinst;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_INTROWIZARD_HELLO);
psp[0].pszIcon = NULL;
psp[0].pfnDlgProc = IntroWizardHello;
psp[0].pszTitle = NULL;
psp[0].lParam = (LPARAM)0;
psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = 0;
psp[1].hInstance = hinst;
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_INTROWIZARD_SEARCH);
psp[1].pszIcon = NULL;
psp[1].pfnDlgProc = IntroWizardSearch;
psp[1].pszTitle = NULL;
psp[1].lParam = (LPARAM)searchPaths;
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_WIZARD | PSH_NOAPPLYNOW;
psh.hwndParent = m_hWnd;
psh.hInstance = hinst;
psh.pszIcon = NULL;
psh.pszCaption = "Welcome to "the_BRANDING;
psh.nPages = sizeof(psp)/sizeof(PROPSHEETPAGE);
psh.nStartPage = 0;
psh.ppsp = psp;
psh.pfnCallback = NULL;
return (PropertySheet(&psh) > 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -