📄 function.cpp
字号:
_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 + -