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

📄 commandbands.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "GSFinder.h"
#include "CommandBands.h"
#include "ListView.h"

#if __PALMSIZE_PC
TCHAR g_szTipsStrings[][32] = {
	_T(""), IDS_UPFOLDER, IDS_REFRESH, IDS_FOLDERVIEW, IDS_CTRLKEY, IDS_SHOWTOOLBAR,
	IDS_BACK, IDS_FRONT,
	IDS_DELETE, IDS_PROPERTY, IDS_CUT, IDS_COPY, IDS_PASTE, IDS_LISTSTYLE,
	IDS_GOTOFOLDER
};
#else
TCHAR g_szTipsStrings[][32] = {
	IDS_BACK, IDS_FRONT, IDS_UPFOLDER, IDS_NEWFOLDER, IDS_DELETE, IDS_PROPERTY,
	IDS_REFRESH, IDS_FOLDERVIEW, IDS_CUT, IDS_COPY,	IDS_PASTE, IDS_LISTSTYLE,
	IDS_GOTOFOLDER
};
#endif
LPTSTR g_lpszTips[17];

WNDPROC Org_CmbEditProc = NULL;
///////////////////////////////////////////////////////////////
LRESULT CALLBACK CmbEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{
		//ADD START TODA
		case WM_SETFOCUS:
			g_MainWnd.m_CmdBands.SetEnableItemSelected3();
			g_MainWnd.m_CmdBands.SetEnableEditPasteBef();
			break;
		case WM_KILLFOCUS:
			g_MainWnd.m_CmdBands.SetEnableEditPasteAft();
			break;
		//ADD END
//MOD START TODA (IME偺Enter僉乕偵偰斀墳偡傞堊 WM_KEYUP->WM_KEYDOWN) 
//		case WM_KEYUP:
		case WM_KEYDOWN:
//MOD END
		{
			if (wParam == VK_RETURN) {
				g_MainWnd.m_ListView.OnViewUpdate();
				return 0;
			}
			break;
		}
//DEL START TODA (僉乕偑斀墳偟側偔側傞堊)
//		case WM_KEYDOWN:
//			return 0;
//DEL END
		default:
			break;
	}
	return CallWindowProc((WNDPROC)Org_CmbEditProc, hWnd, message, wParam, lParam);
}
///////////////////////////////////////////////////////////////
CCmdBands::CCmdBands()
{
	m_Settings.BandInfo[0].dwStyle = RBBS_CHILDEDGE;
	m_Settings.BandInfo[0].dwWidth = 380;	//MOD TODA (230 -> 380)
	m_Settings.BandInfo[0].dwID = BANDID_MENUBAR;
	m_Settings.BandInfo[1].dwStyle = RBBS_CHILDEDGE;
	m_Settings.BandInfo[1].dwWidth = 140;
	m_Settings.BandInfo[1].dwID = BANDID_TOOLBAR;
	m_Settings.BandInfo[2].dwStyle = RBBS_CHILDEDGE | RBBS_BREAK;
	m_Settings.BandInfo[2].dwWidth = 140;
	m_Settings.BandInfo[2].dwID = BANDID_ADDRESSBAR;
	m_Settings.bShowToolBar = TRUE;
	m_Settings.bShowAddressBar = TRUE;

	m_rcTool.top = -999;
	m_rcAddr.top = -999;
}

///////////////////////////////////////////////////////////////
CCmdBands::~CCmdBands()
{
}

///////////////////////////////////////////////////////////////
//僐儅儞僪僶儞僪偺嶌惉
void CCmdBands::Init(HWND hwndParent)
{
	REBARBANDINFO rbi;
	HWND hCB;
	int i;

	//僀儊乕僕儕僗僩嶌惉
	m_hImageList = ImageList_Create(11, 16, ILC_COLOR, 0, 2);
	HBITMAP hBmp = LoadBitmap(g_hInst, (LPCTSTR)IDB_MENU);
	ImageList_Add(m_hImageList, hBmp, NULL);
	DeleteObject(hBmp);
	hBmp = LoadBitmap(g_hInst, (LPCTSTR)IDB_TOOLBAR);
	ImageList_Add(m_hImageList, hBmp, NULL);
	DeleteObject(hBmp);

	GetSettings();

	//儕僶乕嶌惉
	m_hWnd = CommandBands_Create(g_hInst, hwndParent, 0, 
		RBS_AUTOSIZE | RBS_VARHEIGHT | RBS_SMARTLABELS | RBS_BANDBORDERS, m_hImageList);
	for (i = 0; i < 3; i++)
	{
		rbi.cbSize = sizeof (REBARBANDINFO);
		rbi.fMask = RBBIM_STYLE | RBBIM_ID | RBBIM_SIZE | RBBIM_IMAGE | RBBIM_CHILDSIZE;
		rbi.fStyle = (m_Settings.BandInfo[i].dwID == BANDID_MENUBAR) ?
					m_Settings.BandInfo[i].dwStyle | RBBS_NOGRIPPER : m_Settings.BandInfo[i].dwStyle;
		rbi.lpText = NULL;
		rbi.wID = m_Settings.BandInfo[i].dwID;
		rbi.cx = m_Settings.BandInfo[i].dwWidth;
		rbi.cxMinChild = MIN_BANDWIDTH;
		rbi.cyMinChild = MIN_BANDHEIGHT;
		rbi.iImage = (m_Settings.BandInfo[i].dwID == BANDID_MENUBAR) ? 0 : 1;

		if (m_Settings.BandInfo[i].dwID == BANDID_ADDRESSBAR) 
		{
			rbi.fMask |= RBBIM_TEXT;
			rbi.lpText = IDS_ADDRESSBAR;
		}
		CommandBands_AddBands(m_hWnd, g_hInst, 1, &rbi);

		hCB = CommandBands_GetCommandBar(m_hWnd, i);
		switch (m_Settings.BandInfo[i].dwID)
		{
			case 0 : CreateMenuBar(hCB); break;
			case 1 : CreateToolBar(hCB); break;
			case 2 : CreateAddressBar(hCB); break;
		}	
	}
	
//MOD START TODA (僐儅儞僪僶儞僪偺暵偠傞儃僞儞捛壛売強)
#ifndef __PALMSIZE_PC
	if(_WIN32_WCE < 400 || !g_MainWnd.m_bOverLapped)
		CommandBands_AddAdornments(m_hWnd, 0, 0, NULL);
#endif
//MOD END
	
	/*for (i=0; i<4; i++)
	{
		REBARBANDINFO rbi;
		rbi.cbSize = sizeof (REBARBANDINFO);
		rbi.fMask = RBBIM_ID | RBBIM_CHILD;
		SendMessage(m_hWnd, RB_GETBANDINFO, i, (LPARAM)&rbi);
		if (rbi.wID == 0xFFFFFFFF)
		{
			SetWindowLong(rbi.hwndChild, GWL_STYLE, GetWindowLong(rbi.hwndChild, GWL_STYLE)|TBSTYLE_FLAT);
			break;
		}
	}*/

	//ADD START TODA
	if(m_rcAddr.top != -999)
		MoveBand(BANDID_ADDRESSBAR, m_rcAddr);
	if(m_rcTool.top != -999)
		MoveBand(BANDID_TOOLBAR, m_rcTool);
	//ADD END

	ShowBand(BANDID_TOOLBAR, m_Settings.bShowToolBar);
	ShowBand(BANDID_ADDRESSBAR, m_Settings.bShowAddressBar);
	SetCheckViewToolBar();
	SetCheckViewAddressBar();
	GetRecent();

	ShowWindow(m_hWnd, SW_SHOW);
}

///////////////////////////////////////////////////////////////
void CCmdBands::Destroy()
{
	SaveSettings();
	SaveRecent();
	ImageList_RemoveAll(m_hImageList);
	ImageList_Destroy(m_hImageList);
	DestroyWindow(m_hWnd);
}

///////////////////////////////////////////////////////////////
void CCmdBands::SetFolderName(LPCTSTR lpszPath)
{
	TCHAR szPath[MAX_PATH];
	wcscpy(szPath, GetRootName());
	if (wcslen(lpszPath))
		wcscpy(szPath, lpszPath);

	int nIndex = SendMessage(m_hComboBox, CB_FINDSTRINGEXACT, 0, (LPARAM)szPath);
	if (nIndex != CB_ERR)
		SendMessage(m_hComboBox, CB_DELETESTRING, nIndex, 0);

	SendMessage(m_hComboBox, CB_INSERTSTRING, 0, (LPARAM)szPath);
	SendMessage(m_hComboBox, CB_SETCURSEL, 0, 0);
}

///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckListStyle(DWORD dwStyle, DWORD dwExStyle)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);

	CheckMenuItem(hMenu, ID_VIEW_LARGEICON, (dwStyle == LVS_ICON)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	CheckMenuItem(hMenu, ID_VIEW_SMALLICON, (dwStyle == LVS_SMALLICON)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	CheckMenuItem(hMenu, ID_VIEW_LIST, (dwStyle == LVS_LIST)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	//MOD START TODA
	CheckMenuItem(hMenu, ID_VIEW_REPORT, (dwStyle == LVS_REPORT && !dwExStyle)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	CheckMenuItem(hMenu, ID_VIEW_REPORTLINE, (dwStyle == LVS_REPORT && dwExStyle)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	//MOD END
}

///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckSort(int nSort, BOOL bRaise)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	
	CheckMenuItem(hMenu, ID_VIEW_SORT_NAME, (nSort == LIST_SORT_NAME)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	
	CheckMenuItem(hMenu, ID_VIEW_SORT_EXT, (nSort == LIST_SORT_EXT)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	CheckMenuItem(hMenu, ID_VIEW_SORT_SIZE, (nSort == LIST_SORT_SIZE)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	CheckMenuItem(hMenu, ID_VIEW_SORT_TIME, (nSort == LIST_SORT_TIME)?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	CheckMenuItem(hMenu, ID_VIEW_SORT_NOT_RAISE, bRaise?MF_BYCOMMAND|MF_UNCHECKED:MF_BYCOMMAND|MF_CHECKED);
}

//ADD START TODA
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckKeyOn(BOOL bCtrlOn, BOOL bShiftOn)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);

	//僐儞僩儘乕儖
	CheckMenuItem(hMenu, ID_EDIT_CONTROL_ON, bCtrlOn?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	
	//僔僼僩
	CheckMenuItem(hMenu, ID_EDIT_SHIFT_ON, bShiftOn?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewSide(BOOL bViewSide)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);	
	CheckMenuItem(hMenu, ID_VIEW_SIDE, bViewSide?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
//ADD END
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewStatusWnd(BOOL bShowStatusWnd)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	CheckMenuItem(hMenu, ID_VIEW_STATUSBAR, bShowStatusWnd?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewFolder(BOOL bShowFolder)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	CheckMenuItem(hMenu, ID_VIEW_FOLDER, bShowFolder?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
	SendMessage(m_hMenubar, TB_SETSTATE, ID_VIEW_FOLDER, bShowFolder ? TBSTATE_CHECKED|TBSTATE_ENABLED : TBSTATE_ENABLED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_VIEW_FOLDER, bShowFolder ? TBSTATE_CHECKED|TBSTATE_ENABLED : TBSTATE_ENABLED);
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckDragDrop(BOOL bDragDrop)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	CheckMenuItem(hMenu, ID_EDIT_DRAGDROP, bDragDrop?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
//ADD END
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewToolBar()
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	CheckMenuItem(hMenu, ID_VIEW_TOOLBAR, m_Settings.bShowToolBar?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetCheckViewAddressBar()
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	CheckMenuItem(hMenu, ID_VIEW_ADDRESSBAR, m_Settings.bShowAddressBar?MF_BYCOMMAND|MF_CHECKED:MF_BYCOMMAND|MF_UNCHECKED);
}

///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableUpperFolder(BOOL bEnable)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	EnableMenuItem(hMenu, ID_VIEW_UPFOLDER, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_VIEW_UPFOLDER, bEnable?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
}
//ADD START TODA (僣乕儖儃僞儞捛壛)
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableFront(BOOL bEnable)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	EnableMenuItem(hMenu, ID_GO_FRONT, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_GO_FRONT, bEnable?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableBack(BOOL bEnable)
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	EnableMenuItem(hMenu, ID_GO_BACK, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_GO_BACK, bEnable?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableCompressSelected(HMENU hMenu, int nPos, int nPos2, DWORD nCompDLL)
{
	HMENU hSubMenu = hMenu;
	HMENU hSubMenu2 = hMenu;
	if(nPos != -1)
		hSubMenu = GetSubMenu(hMenu, nPos);
	if(nPos2 != -1)
		hSubMenu2 = GetSubMenu(hMenu, nPos2);

⌨️ 快捷键说明

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