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

📄 ppcfolderdlg.cpp

📁 WINCE SIMPLE mp3 Player
💻 CPP
字号:
//PpcFolderDlg.cpp
#include "GSPlayer2.h"
#include "PpcFolderDlg.h"

CPpcFolderDlg::CPpcFolderDlg()
{
	m_hwndMB = NULL;
	m_pOrgProc = NULL;
}

CPpcFolderDlg::~CPpcFolderDlg()
{
}

void CPpcFolderDlg::OnInitDialog(HWND hDlg)
{
	CFolderDlg::OnInitDialog(hDlg);

	SHMENUBARINFO mbi;
	memset(&mbi, 0, sizeof(SHMENUBARINFO));
	mbi.cbSize = sizeof(SHMENUBARINFO);
	mbi.hwndParent = hDlg;
	mbi.nToolBarId = IDR_FOLDERDLG;
	mbi.hInstRes = GetInst();
	SHCreateMenuBar(&mbi);
	m_hwndMB = mbi.hwndMB;

	m_pOrgProc = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, IDC_TREE_FOLDER), 
										GWL_WNDPROC, (LONG)FolderDlgTreeHookProc);
}

void CPpcFolderDlg::OnOK(HWND hDlg)
{
	HWND hTV = GetDlgItem(hDlg, IDC_TREE_FOLDER);
	HTREEITEM hTreeItem = TreeView_GetSelection(hTV);
	GetTree(hTV, hTreeItem, m_pszPath);
	EndDialog(hDlg, IDOK);

	if (m_hwndMB) {
		CommandBar_Destroy(m_hwndMB);
		m_hwndMB = NULL;
	}
	if (m_pOrgProc) {
		SetWindowLong(GetDlgItem(hDlg, IDC_TREE_FOLDER), GWL_WNDPROC, (LONG)m_pOrgProc);
		m_pOrgProc = NULL;
	}
}

void CPpcFolderDlg::OnCancel(HWND hDlg)
{
	CFolderDlg::OnCancel(hDlg);
	if (m_hwndMB) {
		CommandBar_Destroy(m_hwndMB);
		m_hwndMB = NULL;
	}
	if (m_pOrgProc) {
		SetWindowLong(GetDlgItem(hDlg, IDC_TREE_FOLDER), GWL_WNDPROC, (LONG)m_pOrgProc);
		m_pOrgProc = NULL;
	}
}

BOOL CPpcFolderDlg::OnCommand(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
	if (CFolderDlg::OnCommand(hDlg, wParam, lParam))
		return TRUE;

	switch (LOWORD(wParam)) {
	case ID_BTNDOWN:
		OnBtnDown(hDlg, lParam);
		return TRUE;
	case IDM_SUBDIR:
		m_bSubFolder = !m_bSubFolder;
		return TRUE;
	}
	return FALSE;
}

void CPpcFolderDlg::OnInitMenuPopup(HMENU hMenu)
{
	CheckMenuItem(hMenu, IDM_SUBDIR, 
		m_bSubFolder ? MF_BYCOMMAND | MF_CHECKED : MF_BYCOMMAND | MF_UNCHECKED);
}

LRESULT CPpcFolderDlg::FolderDlgTreeHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	CPpcFolderDlg* pDlg = (CPpcFolderDlg*)GetWindowLong(GetParent(hWnd), DWL_USER);

	if (uMsg != WM_KEYUP) 
		return CallWindowProc(pDlg->m_pOrgProc, hWnd, uMsg, wParam, lParam);

	if (wParam != VK_LEFT && wParam != VK_RIGHT) 
		return CallWindowProc(pDlg->m_pOrgProc, hWnd, uMsg, wParam, lParam);

	PostMessage(GetParent(hWnd), WM_COMMAND, ID_BTNDOWN, wParam);
	return CallWindowProc(pDlg->m_pOrgProc, hWnd, uMsg, wParam, lParam);
}

void CPpcFolderDlg::OnBtnDown(HWND hDlg, WPARAM wParam)
{
	TV_ITEM tvi;
	HWND hWnd = GetDlgItem(hDlg, IDC_TREE_FOLDER);
	HTREEITEM hItem = TreeView_GetSelection(hWnd);
	if (!hItem)
		return;

	memset(&tvi, 0, sizeof(tvi));
	tvi.mask = TVIF_CHILDREN | TVIF_STATE;
	tvi.hItem = hItem;
	TreeView_GetItem(hWnd, &tvi);

	if (tvi.cChildren) {
		if (wParam == VK_RIGHT) {
			if (!(tvi.state & TVIS_EXPANDED))
				TreeView_Expand(hWnd, hItem, TVE_EXPAND);
			else {
				hItem = TreeView_GetChild(hWnd, hItem);
				TreeView_SelectItem(hWnd, hItem);
			}
		}
		else {
			if (tvi.state & TVIS_EXPANDED)
				TreeView_Expand(hWnd, hItem, TVE_COLLAPSE);
			else {
				hItem = TreeView_GetParent(hWnd, hItem);
				TreeView_SelectItem(hWnd, hItem);
			}
		}
	}
	else {
		if (wParam == VK_LEFT) {
			hItem = TreeView_GetParent(hWnd, hItem);
			TreeView_SelectItem(hWnd, hItem);
		}
	}
}

⌨️ 快捷键说明

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