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

📄 commandbands.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	//MOD END
	{
		DWORD dwType = REG_BINARY;
		BYTE* lpData = new BYTE[sizeof(m_Settings)];
		DWORD dwDataSize = sizeof(m_Settings);
		//Bar1
		if (RegQueryValueEx(hKey, _T("CmdBands"), 0, &dwType, lpData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_Settings, lpData, sizeof(m_Settings));
		delete[] lpData;

		//AddrPos
		lpData = new BYTE[sizeof(m_rcAddr)];
		dwDataSize = sizeof(m_rcAddr);
		if (RegQueryValueEx(hKey, _T("AddrPos"), 0, &dwType, lpData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_rcAddr, lpData, sizeof(m_rcAddr));
		delete[] lpData;

		//m_rcTool
		lpData = new BYTE[sizeof(m_rcTool)];
		dwDataSize = sizeof(m_rcTool);
		if (RegQueryValueEx(hKey, _T("m_rcTool"), 0, &dwType, lpData, &dwDataSize) == ERROR_SUCCESS)
			memcpy(&m_rcTool, lpData, sizeof(m_rcTool));
		delete[] lpData;

		RegCloseKey(hKey);
	}

	//惓摉惈僠僃僢僋
	if (m_Settings.BandInfo[0].dwID == m_Settings.BandInfo[1].dwID || 
		m_Settings.BandInfo[1].dwID == m_Settings.BandInfo[2].dwID || 
		m_Settings.BandInfo[2].dwID == m_Settings.BandInfo[0].dwID || 
		m_Settings.BandInfo[0].dwID > 2 || 
		m_Settings.BandInfo[1].dwID > 2 ||
		m_Settings.BandInfo[2].dwID > 2)
	{
		m_Settings.BandInfo[0].dwStyle = RBBS_CHILDEDGE;
		m_Settings.BandInfo[0].dwWidth = 230;
		m_Settings.BandInfo[0].dwID = 0;
		m_Settings.BandInfo[1].dwStyle = RBBS_CHILDEDGE;
		m_Settings.BandInfo[1].dwWidth = 140;
		m_Settings.BandInfo[1].dwID = 1;
		m_Settings.BandInfo[2].dwStyle = RBBS_CHILDEDGE | RBBS_BREAK;
		m_Settings.BandInfo[2].dwWidth = 140;
		m_Settings.BandInfo[2].dwID = 2;
	}
}

///////////////////////////////////////////////////////////////
void CCmdBands::CreateMenuBar(HWND hCB)
{
#ifdef __PALMSIZE_PC
	int nNum = 5;
	for (int i = 0; i < nNum; i++)
		g_lpszTips[i] = g_szTipsStrings[i];
	CommandBar_AddBitmap(hCB, g_hInst, IDR_MAINFRAME, nNum, 0, 0);
	CommandBar_AddToolTips(hCB, nNum, g_lpszTips);

	//iBitmap, idCommand, fsState, fsStyle, dwData, iString	
	TBBUTTON tbbMain[] = {
		{0, ID_VIEW_UPFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 1},
		{1, ID_VIEW_UPDATE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 2},
		{2, ID_VIEW_FOLDER, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 3},	//MOD TODA BUTTON->CHECK
		{3, ID_EDIT_CONTROL_ON, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 4},
		{4, ID_VIEW_TOOLBAR, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 5}
	};
	CommandBar_AddButtons(hCB, sizeof(tbbMain) / sizeof(TBBUTTON), tbbMain);

	//僗僞僀儖傪曄峏 - 儃僞儞傪僼儔僢僩偵
	SetWindowLong(hCB, GWL_STYLE, GetWindowLong(hCB, GWL_STYLE)|TBSTYLE_FLAT);
	m_hMenubar2 = hCB;
#endif

	CommandBar_InsertMenubar(hCB, g_hInst, IDR_MAINFRAME, 0);
	m_hMenubar = hCB;
	HWND hwndMenu = GetWindow(hCB, GW_CHILD);
	SetWindowPos(hwndMenu, 0, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
}

///////////////////////////////////////////////////////////////
void CCmdBands::CreateToolBar(HWND hCB)
{
#ifdef __PALMSIZE_PC
	int nTop = 6;
	int nNum = 9;
	for (int i = nTop; i < (nTop+nNum); i++)
		g_lpszTips[i] = g_szTipsStrings[i];
	CommandBar_AddBitmap(hCB, g_hInst, IDR_TOOLBAR, nNum, 0, 0);
	CommandBar_AddToolTips(hCB, nNum, &g_lpszTips[nTop]);

	//iBitmap, idCommand, fsState, fsStyle, dwData, iString	
	TBBUTTON tbbMain[] = {
		{0, ID_GO_BACK, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
		{1, ID_GO_FRONT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 1},
		{2, ID_FILE_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 2},
		{3, ID_FILE_PROPERTY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 3},
		{4, ID_EDIT_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 4},
		{5, ID_EDIT_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 5},
		{6, ID_EDIT_PASTE, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 6},
		{7, ID_VIEW_STYLE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 7},
		{8, IDC_BTN_GOTOFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 8},
	};
#else
	//MOD START TODA (僣乕儖儃僞儞捛壛 10->13)
	int nNum = 13;
	for (int i = 0; i < nNum; i++)
		g_lpszTips[i] = g_szTipsStrings[i];
	CommandBar_AddBitmap(hCB, g_hInst, IDR_MAINFRAME, nNum, 0, 0);
	CommandBar_AddToolTips(hCB, nNum, g_lpszTips);
	//MOD END

	//iBitmap, idCommand, fsState, fsStyle, dwData, iString	
	TBBUTTON tbbMain[] = {
		//MOD START TODA (僣乕儖儃僞儞捛壛/儃僞儞埵抲廋惓)
		{0, ID_GO_BACK, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},
		{1, ID_GO_FRONT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 1},
		{2, ID_VIEW_UPFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 2},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{3, ID_FILE_CREATEFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 3},
		{4, ID_FILE_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 4},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{5, ID_FILE_PROPERTY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 5},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{6, ID_VIEW_UPDATE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 6},
		{7, ID_VIEW_FOLDER, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 7},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{8, ID_EDIT_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 8},
		{9, ID_EDIT_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 9},
		{10,ID_EDIT_PASTE, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 10},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{11,ID_VIEW_STYLE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 11},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{12, IDC_BTN_GOTOFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 12},
		//MOD END
	};
#endif
	CommandBar_AddButtons(hCB, sizeof(tbbMain) / sizeof(TBBUTTON), tbbMain);
	
	//MOD TODA(僐儊儞僩傾僂僩偺夝彍)
	//僗僞僀儖傪曄峏 - 儃僞儞傪僼儔僢僩偵
	SetWindowLong(hCB, GWL_STYLE, GetWindowLong(hCB, GWL_STYLE)|TBSTYLE_FLAT);
	m_hToolbar = hCB;
}

///////////////////////////////////////////////////////////////
void CCmdBands::CreateAddressBar(HWND hCB)
{
	m_hComboBox = CommandBar_InsertComboBox(hCB, g_hInst, 480, CBS_AUTOHSCROLL|CBS_DROPDOWN|WS_VSCROLL, 0, NULL);
	SendMessage(m_hComboBox, CB_SETEXTENDEDUI, TRUE, 0);
	HWND hwndEdit = GetWindow(m_hComboBox, GW_CHILD);
	Org_CmbEditProc = (WNDPROC)GetWindowLong(hwndEdit, GWL_WNDPROC);
	SetWindowLong(hwndEdit, GWL_WNDPROC, (DWORD)CmbEditProc);
	m_hAddrbar = hCB;
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableEditPasteBef()
{
	SetEnableEditPaste(FALSE);

	//僋儕僢僾儃乕僪僆乕僾儞
	if(OpenClipboard(NULL)) {

		//僋儕僢僾儃乕僪偵僨乕僞偑偁傞応崌偼桳岠
		HANDLE hClipText = GetClipboardData(CF_UNICODETEXT);
		if(hClipText)
			SetEnableEditPaste(TRUE, FALSE);

		//僋儕僢僾儃乕僪僋儘乕僘
		CloseClipboard();
	}
}
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableEditPasteAft()
{
	//僐僺乕偟偨僼傽僀儖偵偰儊僯儏乕偺桳岠/柍岠愝掕
	SetEnableEditPaste((g_MainWnd.m_ListView.m_lpliinfo?TRUE:FALSE));
}
//ADD END
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableEditPaste(BOOL bEnable, BOOL bShortCut)	//MOD TODA
{
	HMENU hMenu = CommandBar_GetMenu(m_hMenubar, 0);
	//MOD START (from GSFinder ver.1.99)
	EnableMenuItem(hMenu, ID_EDIT_PASTE, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
	//MOD START TODA
	if(bShortCut)
		EnableMenuItem(hMenu, ID_EDIT_PASTE_SHORTCUT, bEnable?MF_BYCOMMAND|MF_ENABLED:MF_BYCOMMAND|MF_GRAYED);
	//MOD END
	SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_PASTE, bEnable ? TBSTATE_ENABLED : TBSTATE_INDETERMINATE);
	//MOD END
}
//MOD START TODA (from GSFinder ver.1.99)
///////////////////////////////////////////////////////////////
void CCmdBands::SaveRecent()
{
	HKEY hKey = 0;
	DWORD dwDisposition;
	if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_RECENT, 0, 
		_T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
	{
		TCHAR szName[32];
		TCHAR szData[MAX_PATH];
		for (int i = 0; i < 5; i++) {
			wsprintf(szName, _T("Recent%d"), i + 1);
			if (SendMessage(m_hComboBox, CB_GETLBTEXT, i, (LPARAM)szData) != CB_ERR)
				RegSetValueEx(hKey, szName, 0, REG_SZ, (LPBYTE)szData, (wcslen(szData) + 1) * sizeof(TCHAR));
		}
		RegCloseKey(hKey);
	}
}
///////////////////////////////////////////////////////////////
void CCmdBands::GetRecent()
{
	if (m_hComboBox)
	{
		HKEY hKey = 0;
		DWORD dwDisposition;
		if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_RECENT, 0, 
			_T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
		{
			DWORD dwDataSize;
			DWORD dwType = REG_SZ;
			BYTE bData[MAX_PATH * sizeof(TCHAR)];

			TCHAR szName[32];
			for (int i = 5 ; i > 0; i--)
			{
				dwDataSize = sizeof(bData);
				wsprintf(szName, _T("Recent%d"), i);
				if (RegQueryValueEx(hKey, szName, 0, &dwType, bData, &dwDataSize) == ERROR_SUCCESS)
				{
					if (wcslen((LPTSTR)bData))
						SendMessage(m_hComboBox, CB_INSERTSTRING, 0, (LPARAM)bData);
				}
			}
			RegCloseKey(hKey);
		}
	}
}
///////////////////////////////////////////////////////////////
void CCmdBands::OnViewToolBar()
{
	m_Settings.bShowToolBar = !m_Settings.bShowToolBar;
	ShowBand(BANDID_TOOLBAR, m_Settings.bShowToolBar);
	SetCheckViewToolBar();

	g_MainWnd.RecalcLayout();
}
///////////////////////////////////////////////////////////////
void CCmdBands::OnViewAddressBar()
{
	m_Settings.bShowAddressBar = !m_Settings.bShowAddressBar;
	ShowBand(BANDID_ADDRESSBAR, m_Settings.bShowAddressBar);
	SetCheckViewAddressBar();

	g_MainWnd.RecalcLayout();
}
//MOD END
///////////////////////////////////////////////////////////////
void CCmdBands::ShowBand(UINT wID, BOOL bShow)
{
	UINT i=0;
	COMMANDBANDSRESTOREINFO cbri;
	for (i=0; i<3; i++)	//MOD TODA (i<4 -> i<3)
	{
		cbri.cbSize = sizeof (COMMANDBANDSRESTOREINFO);
		CommandBands_GetRestoreInformation(m_hWnd, i, &cbri);
		if (cbri.wID == wID)
			break;
	}
	SendMessage(m_hWnd, RB_SHOWBAND, i, bShow);
}
//ADD START TODA
///////////////////////////////////////////////////////////////
void CCmdBands::MoveBand(UINT wID, RECT wRC)
{
	UINT i=0;
	COMMANDBANDSRESTOREINFO cbri;
	for (i=0; i<3; i++)	//MOD TODA (i<4 -> i<3)
	{
		cbri.cbSize = sizeof (COMMANDBANDSRESTOREINFO);
		CommandBands_GetRestoreInformation(m_hWnd, i, &cbri);
		if (cbri.wID == wID)
			break;
	}
	SetWindowPos(m_hWnd, 0, wRC.left, wRC.top, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
}
///////////////////////////////////////////////////////////////
void CCmdBands::GetBandRect(UINT wID, RECT *pwRC)
{
	UINT i=0;
	COMMANDBANDSRESTOREINFO cbri;
	for (i=0; i<3; i++)	//MOD TODA (i<4 -> i<3)
	{
		cbri.cbSize = sizeof (COMMANDBANDSRESTOREINFO);
		CommandBands_GetRestoreInformation(m_hWnd, i, &cbri);
		if (cbri.wID == wID)
			break;
	}
	GetWindowRect(m_hWnd, pwRC);
}
//ADD END

⌨️ 快捷键说明

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