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

📄 commandbandsppc.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_COPY, TBSTATE_INDETERMINATE);
	}
	else
	{
		//儊僯儏乕傪柍岠偵
		EnableMenuItem(hMenu, ID_FILE_OPEN, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_OPEN_PARAM, MF_BYCOMMAND|MF_GRAYED);//add by kawa
		EnableMenuItem(hMenu, ID_FILE_CREATE_SHORTCUT, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_DELETE, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_RENAME, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_PROPERTY, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_IR_SEND, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_COPY_FOLDER, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_MOVE_FOLDER, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_SHORTCUT_FOLDER, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_TO_APP, MF_BYCOMMAND|MF_GRAYED);
		//EnableMenuItem(hMenu, ID_EDIT_CUT, MF_BYCOMMAND|MF_GRAYED);
		//EnableMenuItem(hMenu, ID_EDIT_COPY, MF_BYCOMMAND|MF_GRAYED);
		//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_GRAYED);
		//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu2, ID_EDIT_CUT, MF_BYCOMMAND|MF_GRAYED); //mod by kawa
		EnableMenuItem(hMenu2, ID_EDIT_COPY, MF_BYCOMMAND|MF_GRAYED); //mod by kawa
		EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_GRAYED); //mod by kawa
		EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_GRAYED); //mod by kawa
		//ADD START TODA
		EnableMenuItem(hMenu, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_GRAYED);
		EnableMenuItem(hMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_GRAYED);
		//ADD END

		for (int i=0; i<g_MainWnd.m_ListView.m_nOpenAppInfoCount; i++)
			EnableMenuItem(hMenu, ID_FILE_OPEN_APP + i, MF_BYCOMMAND|MF_GRAYED);

		//僣乕儖僶乕傪柍岠偵
		SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_DELETE, TBSTATE_INDETERMINATE);
		SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_PROPERTY, TBSTATE_INDETERMINATE);
		SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_CUT, TBSTATE_INDETERMINATE);
		SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_COPY, TBSTATE_INDETERMINATE);
	}
	//MOD END
	//ADD START TODA (専嶕偺桳岠/柍岠敾掕)
	SetEnableSearchSelected(hMenu, g_MainWnd.m_ListView.m_szCurrentFolder);
	//ADD END
}
//ADD START TODA (僣儕乕價儏乕梡儊僯儏乕愝掕)
///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableItemSelected2()
{
	//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
	HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_FILE); //mod by kawa
	HMENU hMenu2 = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT); //add by kawa

	//儊僯儏乕傪桳岠偵
	EnableMenuItem(hMenu, ID_FILE_OPEN, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_FILE_CREATE_SHORTCUT, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_FILE_DELETE, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_FILE_RENAME, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_FILE_PROPERTY, MF_BYCOMMAND|MF_ENABLED);
	//EnableMenuItem(hMenu, ID_EDIT_CUT, MF_BYCOMMAND|MF_ENABLED);
	//EnableMenuItem(hMenu, ID_EDIT_COPY, MF_BYCOMMAND|MF_ENABLED);
	//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_ENABLED);
	//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu2, ID_EDIT_CUT, MF_BYCOMMAND|MF_ENABLED);//mod by kawa
	EnableMenuItem(hMenu2, ID_EDIT_COPY, MF_BYCOMMAND|MF_ENABLED);//mod by kawa
	EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_ENABLED); //mod by kawa
	EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_ENABLED); //mod by kawa
	EnableMenuItem(hMenu, ID_FILE_COPY_FOLDER, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_FILE_MOVE_FOLDER, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_FILE_SHORTCUT_FOLDER, MF_BYCOMMAND|MF_ENABLED);
	//SetEnableCompressSelected(GetSubMenu(hMenu, 0), 0, 8, g_MainWnd.m_ListView.m_Settings.nCompDLL);
	SetEnableCompressSelected(hMenu, GetSubMenu(hMenu, 0), 0, 8, g_MainWnd.m_ListView.m_Settings.nCompDLL);//mod by kawa

	//僣乕儖僶乕傪桳岠偵
	SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_DELETE, TBSTATE_ENABLED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_PROPERTY, TBSTATE_ENABLED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_CUT, TBSTATE_ENABLED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_COPY, TBSTATE_ENABLED);

	EnableMenuItem(hMenu, ID_FILE_IR_SEND, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_TO_APP, MF_BYCOMMAND|MF_GRAYED);

	for (int i=0; i<g_MainWnd.m_ListView.m_nOpenAppInfoCount; i++)
		EnableMenuItem(hMenu, ID_FILE_OPEN_APP + i, MF_BYCOMMAND|MF_GRAYED);
}

///////////////////////////////////////////////////////////////
void CCmdBands::SetEnableItemSelected3()
{
	//HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETMENU, 0, 0);
	HMENU hMenu = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_FILE); // mod by kawa
	HMENU hMenu2 = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT); // add by kawa

	//儊僯儏乕傪桳岠偵
	EnableMenuItem(hMenu, ID_EDIT_CUT, MF_BYCOMMAND|MF_ENABLED);
	EnableMenuItem(hMenu, ID_EDIT_COPY, MF_BYCOMMAND|MF_ENABLED);

	//儊僯儏乕傪柍岠偵
	EnableMenuItem(hMenu, ID_FILE_OPEN, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_CREATE_SHORTCUT, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_DELETE, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_RENAME, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_PROPERTY, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_IR_SEND, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_COPY_FOLDER, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_MOVE_FOLDER, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_SHORTCUT_FOLDER, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_TO_APP, MF_BYCOMMAND|MF_GRAYED);
	//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_GRAYED);
	//EnableMenuItem(hMenu, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_NAME, MF_BYCOMMAND|MF_GRAYED);//mod by kawa
	EnableMenuItem(hMenu2, ID_EDIT_COPY_FILE_PATH, MF_BYCOMMAND|MF_GRAYED);// mod by kawa
	EnableMenuItem(hMenu, ID_FILE_COMPRESS, MF_BYCOMMAND|MF_GRAYED);
	EnableMenuItem(hMenu, ID_FILE_UNCOMPRESS, MF_BYCOMMAND|MF_GRAYED);

	for (int i=0; i<g_MainWnd.m_ListView.m_nOpenAppInfoCount; i++)
		EnableMenuItem(hMenu, ID_FILE_OPEN_APP + i, MF_BYCOMMAND|MF_GRAYED);

	//僣乕儖僶乕傪桳岠偵
	SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_CUT, TBSTATE_ENABLED);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_EDIT_COPY, TBSTATE_ENABLED);

	//僣乕儖僶乕傪柍岠偵
	SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_DELETE, TBSTATE_INDETERMINATE);
	SendMessage(m_hToolbar, TB_SETSTATE, ID_FILE_PROPERTY, TBSTATE_INDETERMINATE);
}
//ADD END

///////////////////////////////////////////////////////////////
void CCmdBands::SaveSettings()
{
	HKEY hKey = 0;
	DWORD dwDisposition;

	//僉乕愝掕
	if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_REBAR,
		0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition)==ERROR_SUCCESS)
	{
		RegSetValueEx(hKey, _T("CmdBands"), 0, REG_BINARY, (LPBYTE)&m_Settings, sizeof(m_Settings));

		RegCloseKey(hKey);
	}
}
///////////////////////////////////////////////////////////////
void CCmdBands::GetSettings()
{
	HKEY hKey = 0;
	DWORD dwDisposition;

	//僉乕庢摼
	if (RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_REBAR,
		0, _T(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition)==ERROR_SUCCESS)
	{
		DWORD dwType;
		BYTE* lpData;
		DWORD dwDataSize;

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

		delete[] lpData;

		RegCloseKey(hKey);
	}
}

///////////////////////////////////////////////////////////////
void CCmdBands::CreateMenuBar(HWND hwndParent)
{
	
    SHMENUBARINFO mbi;
	memset(&mbi, 0, sizeof(SHMENUBARINFO));
	mbi.cbSize = sizeof(SHMENUBARINFO);
	mbi.hwndParent = g_MainWnd.m_hWnd;
	mbi.nToolBarId = IDR_MAINFRAME; //menu
	mbi.hInstRes = g_hInst;
	mbi.nBmpId = 0;
    mbi.cBmpImages = 0;	
		
	if (!SHCreateMenuBar(&mbi)) 
	{
        MessageBox(g_MainWnd.m_hWnd, L"SHCreateMenuBar Failed", L"Error", MB_OK);
	}	
	m_hWnd = mbi.hwndMB;
	
}
///////////////////////////////////////////////////////////////
void CCmdBands::CreateToolBar(HWND hwndParent)
{
	m_hToolbar= CommandBar_Create(g_hInst, hwndParent, 0);
	int nNum = 9;
	for (int i=0; i<nNum; i++)
		g_lpszToolTips[i] = g_szToolTipsStrings[i];
		
	CommandBar_AddBitmap(m_hToolbar, g_hInst, IDR_TOOLBAR, nNum, 0, 0);
	CommandBar_AddToolTips(m_hToolbar, nNum, g_lpszToolTips);

	//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},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{2, ID_FILE_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 2},				
		{3, ID_FILE_PROPERTY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 3},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{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},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{7, ID_VIEW_STYLE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 7},
		{0, NULL, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0},
		{8, IDC_BTN_GOTOFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 8},		//ADD TODA
//		{0, ID_FILE_CREATEFOLDER, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0},	//DEL TODA 
//		{7, ID_TOOL_MYDOCUMENTS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 7},	//DEL TODA
//		{8, ID_TOOL_STARTMENU, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 8},		//DEL TODA
	};
	CommandBar_AddButtons(m_hToolbar, sizeof(tbbMain) / sizeof(TBBUTTON), tbbMain);

	SetWindowLong(m_hToolbar, GWL_STYLE, GetWindowLong(m_hToolbar, GWL_STYLE)|CCS_NOPARENTALIGN);
	//MOD END
}
///////////////////////////////////////////////////////////////
void CCmdBands::CreateAddressBar(HWND hwndParent)
{
	m_hAddressbar= CommandBar_Create(g_hInst, hwndParent, 0);

	m_hComboBox = CommandBar_InsertComboBox(m_hAddressbar, g_hInst, GetSystemMetrics(SM_CXSCREEN) - 2, 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);

	MoveWindow(m_hAddressbar, 0, 0, GetSystemMetrics(SM_CXSCREEN), 22, TRUE);
}
//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 = (HMENU)SendMessage(m_hWnd, SHCMBM_GETSUBMENU, 0, ID_EDIT);
	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);
}
///////////////////////////////////////////////////////////////
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 < 8; 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 = 8 ; 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;
	ShowWindow(m_hToolbar, m_Settings.bShowToolBar?SW_SHOW:SW_HIDE);
	SetCheckViewToolBar();

	g_MainWnd.RecalcLayout();
}
///////////////////////////////////////////////////////////////
void CCmdBands::OnViewAddressBar()
{
	m_Settings.bShowAddressBar = !m_Settings.bShowAddressBar;
	ShowWindow(m_hAddressbar, m_Settings.bShowAddressBar?SW_SHOW:SW_HIDE);
	SetCheckViewAddressBar();

	g_MainWnd.RecalcLayout();
}

⌨️ 快捷键说明

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