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

📄 function.cpp

📁 用VC写的浏览器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
_myexit:
	nIndex--;
	if (nIndex>-1)
	{
		aIndex[nIndex] = _NULL;
		strIndex[nIndex] = "";
	}
}

void _LoadMenuString(CMenu *pMenu, CString strDomain)
{
	char num[10];
	char buf[MAX_INI];
	//
	CMenu *pSubMenu;
	int value,j,nID;
	UINT i=0,itemCount,state;
	static char aIndex[5];
	static char nIndex=_NULL;
	char key[10]="";
	CString strName;
	BOOL r = TRUE;
	
	nIndex++;
	//
	itemCount = pMenu->GetMenuItemCount();
	for(i=0;i<itemCount;i++)
	{
		state=pMenu->GetMenuState(i,MF_BYPOSITION);
		if(state&MF_POPUP)
		{	
			aIndex[nIndex] = i;
			aIndex[nIndex+1] = _NULL;
			j=0;
			key[0]=0;
			while( (value=aIndex[j++]) != _NULL)
			{
				strcat(key,"X");
				itoa(value, num, 10);
				strcat(key,num);
			}
			r = _GetPrivateProfileString(strDomain, key, NULL, buf, MAX_INI, theApp.m_strLngFile);
			if (r)
			{
				strName = buf;
				strName.Replace("\\t","\t");
				pMenu->ModifyMenu( i, MF_BYPOSITION|MF_STRING, 0, strName);
			}

			pSubMenu = pMenu->GetSubMenu(i);
			if (pSubMenu)
				_LoadMenuString(pSubMenu,strDomain);
		}
		else if(state&MF_SEPARATOR)
			;
		else
		{
			nID = pMenu->GetMenuItemID(i);
			itoa(nID,num,10);
			r = _GetPrivateProfileString(strDomain, num, NULL, buf, MAX_INI, theApp.m_strLngFile);
			if (r)
			{
				strName = buf;
				strName.Replace("\\t","\t");
				pMenu->ModifyMenu( i, MF_BYPOSITION|MF_STRING, nID, strName);
			}
		}
	}
	nIndex--;
	if (nIndex>-1)
		aIndex[nIndex] = _NULL;
}

int GetPopMenuIconID(char aIndex[5])
{
	switch (aIndex[0])
	{
	case 0://file
		{
			switch (aIndex[1])
			{
			case 0: return 9;
			case 19:return 65;
			}
		}
		break;
	case 2://view menu
		{
			switch (aIndex[1])
			{
			case 4: return 8;
			case 5:return 14;
			case 9:return 27;
			}
		}
		break;
	case 4://group
		{
			switch (aIndex[1])
			{
			case 2: return 69;
			}
		}
		break;
	case 5://tools
		{
			switch (aIndex[1])
			{
			case 0: return 26;
			case 2: return 37;
			case 3: return 33;
			case 4: return 10;
			case 7: return 38;
			case 8: return 25;
			}
		}
		break;
	}
	return -1;
}

int GetMenuIconID(int nID)
{
	switch (nID)
	{
	case ID_GO_BACK:			return 0;
	case ID_GO_FORWARD:			return 1;
	case ID_RTAB_STOP:
	case ID_VIEW_STOP:			return 2;
	case ID_RTAB_REFRESH:
	case ID_VIEW_REFRESH:		return 3;
	case ID_FILE_NEW_S:			return 4;
	case ID_GO_START_PAGE:		return 4;
	case ID_ALL_PAGE_LINKS:		return 5;
	case ID_FAVORITES_DROPDOWN:	return 6;
	case ID_FILE_PRINT:			return 7;
	//8FONT-ok
	case ID_FILE_NEW_BLANK:		return 9;
	//case ID_OPTIONS_LOADIMAGE:	return 10;
	case ID_VIEW_FULLSCREEN:	return 11;
	case ID_VIEW_HIS:			return 12;
	case ID_TOOLS_EMAIL:		return 13;
	//14ENCODING-ok
	case ID_GO_UP_PAGE:			return 15;
	case ID_VIEW_AUTOHIDE:		return 16;
	//17 WEBPROXY
	//18 PROXY
	case ID_FILE_WORKOFFLINE:	return 19;
	case ID_EDIT_EDIT:			return 20;
	case ID_FILE_OPENF:			return 21;
	//22 STOP OPEN
	case ID_VIEW_FOLDER:		return 23;
	case ID_VIEW_EXPLOREBAR_RESOURCE:		return 24;
	//25 skin
	case ID_TOOLS_AUTOSCROLL_USEAUTOSCROLLING:		return 26;
	case ID_EDIT_UNDOCLOSE:		return 27;
	//case ID_RTAB_AUTOSAVE:
	case ID_FILE_SAVEAS:		return 28;
	case ID_EDIT_COPY:			return 29;
	case ID_OPTIONS_GreenBrowserOPTIONS:return 30;
	case ID_VIEW_STOP_ALL:		return 31;
	case ID_VIEW_REFRESHALL:	return 32;
	case ID_TOOLS_SETBG:		return 33;
	case ID_ORGGROUP:			return 34;
	case ID_EDIT_FIND:			return 35;
	//36 NEXT
	case ID_SC_FILLFORM:		return 37;
	case ID_TOOLS_ALL:			return 38;
	//38 CLEAN HIS
	case ID_EDIT_PASTE:			return 39;

	//IDB_SYSMENU
	//case ID_VIEW_WIN_MIN:
	case ID_WINDOW_MIN:			return 40;
	//case ID_VIEW_WIN_RESTORE:
	case ID_WINDOW_RESTOR:		return 41;
	//case ID_VIEW_WIN_CLOSE:
	case ID_FILE_CLOSE_1:
	case ID_FILE_CLOSE_2:		return 42;
	//case ID_VIEW_WIN_CLOSEALL:
	case ID_FILE_CLOSEALL:		return 43;
	//case ID_VIEW_WIN_NEXT:
	case ID_TAB_NEXT:		return 44;
	//case ID_VIEW_WIN_PRE:
	case ID_TAB_PRE:		return 45;

	case ID_TOOLS_COLLECT:		return 46;
	case ID_APP_EXIT:			return 47;
	case ID_VIEW_LOCKTOOLBAR:	return 48;
	case ID_EDIT_CUT:			return 49;
	//case ID_FILE_WORKOFFLINE:	return 50;
//51 add here fav
//52 open all fav
	case ID_RTAB_ADDFAV:
	case ID_FAVORITES_ADDTOFAVORITES:	return 53;
	case ID_FAVORITES_ORGNIZEFAVORITES:	return 54;
	case ID_WINDOW_TILE_VERT:			return 55;
	case ID_WINDOW_TILE_HORZ:			return 56;
	case ID_WINDOW_CASCADE:		return 57;
	case ID_HELP_HELP:			return 58;
	case ID_HELP_HOMEPAGE:		return 59;
	case ID_APP_ABOUT:			return 60;
	case ID_TOOLS_SYNC:			return 61;
//62
	case ID_FAVORITES_IMPORTFAVORITES:	return 63;
	case ID_FAVORITES_EXPORTFAVORITES:	return 64;
//65
	case ID_FILE_SENDPAGEBYEMAIL:		return 66;
	case ID_FILE_SENDLINKBYEMAIL:		return 67;
	case ID_TOOLS_ADDR:					return 68;

	//
	case ID_ADDTO_IE:					return 71;

	default:	return -1;
	}
}

void _LoadMenuStringOwnerDraw(CMenu *pMenu, CString strDomain,CImageList *imgList)
{
	char num[10];
	char buf[MAX_INI];
	//
	CMenu *pSubMenu;
	int value,j,nID;
	UINT i=0,itemCount,state;
	static char aIndex[5];
	static char nIndex=_NULL;
	char key[10]="";
	CString strName;
	BOOL r = TRUE;
	BOOL bNeedReadRes = TRUE;
	//
	CMenuData * md = NULL;
	MENUITEMINFO mii;
	
	nIndex++;
	//
	itemCount = pMenu->GetMenuItemCount();
	for(i=0;i<itemCount;i++)
	{
		md= new CMenuData;
		md->m_pImgList = imgList;
		//
		state=pMenu->GetMenuState(i,MF_BYPOSITION);
		if(state&MF_POPUP)
		{
			bNeedReadRes = TRUE;
			aIndex[nIndex] = i;
			aIndex[nIndex+1] = _NULL;
			if (theApp.m_bUseLngFile)
			{	
				j=0;
				key[0]=0;
				while( (value=aIndex[j++]) != _NULL)
				{
					strcat(key,"X");
					itoa(value, num, 10);
					strcat(key,num);
				}
				r = _GetPrivateProfileString(strDomain, key, NULL, buf, MAX_INI, theApp.m_strLngFile);
				if (r)
				{
					strName = buf;
					strName.Replace("\\t","\t");
					pMenu->ModifyMenu( i, MF_BYPOSITION|MF_STRING|MF_POPUP, (UINT)pMenu->GetSubMenu(i)->m_hMenu, strName);
					//
					SetMenuText(strName,md);
					bNeedReadRes = FALSE;
				}
			}
			//read string from res
			if (bNeedReadRes)
			{
				pMenu->GetMenuString( i, buf, countof(buf)-1, MF_BYPOSITION);//::GetMenuString(hSubMenu, i, name, countof(name)-1, MF_BYPOSITION);
				SetMenuText(buf,md);
			}
			md->m_nBitmap = GetPopMenuIconID(aIndex);
			//
			mii.cbSize = sizeof(mii);
			mii.fMask = MIIM_DATA|MIIM_TYPE;
			mii.fType = MFT_STRING|MFT_OWNERDRAW;
			mii.dwItemData = (DWORD)md;
			::SetMenuItemInfo(pMenu->m_hMenu, i, TRUE, &mii);
			//
			pSubMenu = pMenu->GetSubMenu(i);
			if (pSubMenu)
				_LoadMenuStringOwnerDraw(pSubMenu,strDomain,imgList);
		}
		else if(state&MF_SEPARATOR)
		{
			md->m_pImgList = NULL;
			md->m_nBitmap = -1;
			mii.cbSize = sizeof(mii);
			mii.fMask = MIIM_DATA|MIIM_TYPE;
			mii.fType = MF_SEPARATOR|MFT_OWNERDRAW;
			mii.dwItemData = (DWORD)md;
			::SetMenuItemInfo(pMenu->m_hMenu, i, TRUE, &mii);
		}
		else
		{
			bNeedReadRes = TRUE;
			nID = pMenu->GetMenuItemID(i);
			if (theApp.m_bUseLngFile)
			{
				itoa(nID,num,10);
				r = _GetPrivateProfileString(strDomain, num, NULL, buf, MAX_INI, theApp.m_strLngFile);
				if (r)
				{
					strName = buf;
					strName.Replace("\\t","\t");
					pMenu->ModifyMenu( i, MF_BYPOSITION|MF_STRING, nID, strName);
					SetMenuText(strName,md);
					bNeedReadRes = FALSE;
				}
			}
			//
			if (bNeedReadRes)
			{
				pMenu->GetMenuString( i, buf, countof(buf)-1, MF_BYPOSITION);
				SetMenuText(buf,md);
			}
			md->m_nBitmap = GetMenuIconID(nID);
			//
			mii.cbSize = sizeof(mii);
			mii.fMask = MIIM_DATA|MIIM_TYPE;
			mii.fType = MFT_STRING|MFT_OWNERDRAW;
			mii.dwItemData = (DWORD)md;
			::SetMenuItemInfo(pMenu->m_hMenu, i, TRUE, &mii);
		}
	}
	nIndex--;
	if (nIndex>-1)
		aIndex[nIndex] = _NULL;
}

//##############################################################
int MSGBOX(UINT nIDPrompt, UINT nType , UINT nIDHelp )
{
	if (theApp.m_bUseLngFile==FALSE)
		return AfxMessageBox(nIDPrompt,nType,nIDHelp);
	else
	{
		CString str;
		_LoadString(str,nIDPrompt);
		return AfxMessageBox(str,nType,nIDHelp);
	}
}

int MSGBOX(LPCTSTR lpszText, UINT nType , UINT nIDHelp )
{
	return AfxMessageBox(lpszText,nType,nIDHelp);
}

//##############################################################
BOOL _OpenFtpUrl(CString strUrl)
{
	if (pmf->m_nFtpOpenType==0)
		return FALSE;	
	else if (pmf->m_nFtpOpenType==1)
	{
		/*TCHAR	szPath[MAX_PATH];
		ExpandEnvironmentStrings("%windir%\\explorer.exe", szPath, MAX_PATH);
		strApp = szPath;*/
		ShellExecute(NULL, "open", "IEXPLORE.EXE", strUrl, "", SW_SHOWNORMAL );
		return FALSE;
	}
	else if (pmf->m_nFtpOpenType==2 && pmf->m_strFtpExePath.GetLength())
	{
		CString strApp;
		CString strPath;

		strApp = pmf->m_strFtpExePath;
		strPath = strApp;
		int i = strPath.ReverseFind('\\');
		strPath = strPath.Left(i+1);

		//better add ftp:// at head
		if (strUrl.Left(7)=="http://")
			strUrl = strUrl.Right(strUrl.GetLength()-7);
		if (strUrl.Left(6)!="ftp://")
			strUrl = "ftp://" + strUrl;
		if((UINT)ShellExecute(NULL, "open", strApp , strUrl, strPath, SW_SHOW )<=32)
			MSGBOX(IDS_TIP_OPEN_FTP_ERR);
		else
			return FALSE;
	}
	return TRUE;
}

//##############################################################
void _LoadFormUrl(CListCtrl *pCtrl)
{
	char* tmp = _FileGetBuffer(theApp.m_strFormDataPath);
	if (tmp==NULL)
		return;
	//
	char *head,*tail;
	char pUrl[512];
	head = tmp;
	int i=0;
	DWORD len = strlen(tmp);
	while(1)
	{
		if (*head == NULL)
			break;
		else if (*head == '[')
		{
			tail = strstr(head,"]");
			len = tail-(head+1);
			STRNCPY(pUrl,head+1,len );
			pCtrl->InsertItem(i,pUrl);
			i++;
			head = tail+ 3;// ]\r\n
		}
		else
		{
			tail = strstr(head,"\r\n");
			if (!tail)
				break;
			head = tail+ 2;// \r\n
		}
	}
	free(tmp);
}

CString _GetSameFormUrl(CString strRoot)
{
	CString strCur;
	strCur.Empty();
	char* tmp = _FileGetBuffer(theApp.m_strFormDataPath);
	if (tmp==NULL)
		return strCur;
	//
	char *head,*tail;
	char pUrl[512];
	head = tmp;
	int i=0;
	DWORD len = strlen(tmp);
	while(1)
	{
		if (*head == NULL)
			break;
		else if (*head == '[')
		{
			tail = strstr(head,"]");
			len = tail-(head+1);
			STRNCPY(pUrl,head+1,len );
			strCur = pUrl;
			strCur = _StringGetRootUrl(strCur);
			if (strCur.CompareNoCase(strRoot)==0)
			{
				strCur = pUrl;
				break;
			}
			i++;
			head = tail+ 3;// ]\r\n
		}
		else
		{
			tail = strstr(head,"\r\n");
			if (!tail)
				break;
			head = tail+ 2;// \r\n
		}
	}
	free(tmp);
	return strCur;
}

//##############################################################
char NUMS[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

#define IS_09azAZ(c)	( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') )

//# => %23
void _CharFormat(char *p)
{
	char c;
	while(*p)
	{	
		if ( IS_09azAZ(*p) )
			p++;//do nothing
		else
		{
			c = *p;
			memmove(p+3,p+1,strlen(p+1)+1);
			*p = '%';
			*(p+1) = NUMS[(c & 0xf0)>>4];
			*(p+2) = NUMS[ c & 0x0f];
			p+=3;
		}
	}
}

void _AsciiFormat(CString& strAscii)
{
	int nLen = strAscii.GetLength();

	for (int i=0; i<nLen; i++)
	{
		if ( !IS_09azAZ(strAscii.GetAt(i)) )
			break;
	}
	if (i == nLen)
		return;//no use format

	LPSTR pAsciiBuf = strAscii.GetBuffer(nLen*3+1);
	_CharFormat(pAsciiBuf);
	strAscii.ReleaseBuffer();
}

void _Ascii2Utf8(CString& strAscii)
{
	int nAsciiLen,nTransLen,length;
	LPSTR pAsciiBuf;
	LPSTR pTransBuf;

	nAsciiLen = strAscii.GetLength();
	nTransLen = nAsciiLen*3 + 1;

	pAsciiBuf = strAscii.GetBuffer(nTransLen);
	pTransBuf = (LPSTR)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,nTransLen);

	length = MultiByteToWideChar(CP_ACP,0,pAsciiBuf,nAsciiLen, (LPWSTR)pTransBuf,nTransLen);
	length = WideCharToMultiByte(CP_UTF8,0,(LPWSTR)pTransBuf,length,   pAsciiBuf,nTransLen,NULL,NULL);
	*(pAsciiBuf+length) = 0;
	
	//# => %23
	_CharFormat(pAsciiBuf);
	strAscii.ReleaseBuffer();
	//
	GlobalFree(pTransBuf);
}

⌨️ 快捷键说明

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