踢!!999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
99999999999B@B@B@BBBMMMM999999999999999999999999999
999999999999M+:.:+9999M:999999999999999999999999999
9999999999999MM9+99MMM:9999999999999999999999999999
99999999999999M+.+99M:99999999999999999999999999999
99999999999999B:.++9M:99999999999999999999999999999
99999999999999B+.+99M:9999AAAAAA9999999999999999999
99999999999999B:.++9M:9AAA++++:+AAA9999999999999999
99999999999999B+.+99M:A+9+A:+++++9AA999999999999999
99999999999999B:.++9:A+@+A:,:++9+A9@M99999999999999
99999999999999B+.+9:A+A,,,,,,+A+A9@A@M9999999999999
99999999999999B:.++A+A+,,.,,+A9A9@A@M@M999999999999
99999999999999B+.+9AA+,,...,++A9@A@A@MM999999999999
99999999999999B:.+:A+++,,.,,++9@A@A@M@M999999999999
99999999999999B+.+A+@+,,,,,+9A@A+@@M@M@M99999999999
99999999999999B:.+A@+++,+,+9A9A++@M@M@MM99999999999
99999999999999B+.+A+@++++++A9A++9M@M@M@M99999999999
99999999999999B:.+A@+@+:+9A9A9A9M@M@M@9M99999999999
0A999999999999B+.+A+@+@+@+@+@A@A@9@9@9@M99999999999
99999999999999B:.+A@+@+@+@+@+@A@M@9@9@9M99999999999
99999999999999B+.+:A@+@+@+@+@A@M@9@9@9M999999999999
99999999999999B:.+:A9@+@+@+@9@A@M@9@9@M999999999999
99999999993333333333M9@9@9@9@9@M@9@9@9M999999999999
99999999993.........MAA99@9@9@M@9@9@9M9999999999999
99999999993...MMMM..MM@9@9@9@9@M@9@9M99999999999999
99999999993....MMM..M:M@9@9@9@9@9@9M999999999999999
99999999993...MMMM..M:9MMM@9@9@9MMM9999999999999999
99999999993..MMM.M..M:9999MMMMMM9999999999999999999
99999999993..MM.....M:99999999999999999999999999999
99999999993..M......M:99999999999999999999999999999
99999999993...M.....MM:9999999999999999999999999999
99999999993.........M9M:999999999999999999999999999
9999999999MMMMMMMMMMMMMM:99999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
99999999999999999999.9999999.9999999999999999999999
9999999....999999999.9999999.99999.999999..99999999
9999999.999.99999999.9999999.99999999999.9999999999
9999999.9999.99...99.9....99....99.9999.99999999999
9999999.9999.9.999.9.9.999.9.999.9.9999....99999999
9999999.9999.9.....9.9.999.9.999.9.9999.999.9999999
9999999.9999.9.99999.9.999.9.999.9.9999.999.9999999
9999999.999.99.999.9.9.999.9.999.9.9999.999.9999999
9999999....9999...99.9....99.999.9.99999...99999999
9999999999999999999999.9999999999999999999999999999
9999999999999999999999.9999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
99999999999B@B@B@BBBMMMM999999999999999999999999999
999999999999M+:.:+9999M:999999999999999999999999999
9999999999999MM9+99MMM:9999999999999999999999999999
99999999999999M+.+99M:99999999999999999999999999999
99999999999999B:.++9M:99999999999999999999999999999
99999999999999B+.+99M:9999AAAAAA9999999999999999999
99999999999999B:.++9M:9AAA++++:+AAA9999999999999999
99999999999999B+.+99M:A+9+A:+++++9AA999999999999999
99999999999999B:.++9:A+@+A:,:++9+A9@M99999999999999
99999999999999B+.+9:A+A,,,,,,+A+A9@A@M9999999999999
99999999999999B:.++A+A+,,.,,+A9A9@A@M@M999999999999
99999999999999B+.+9AA+,,...,++A9@A@A@MM999999999999
99999999999999B:.+:A+++,,.,,++9@A@A@M@M999999999999
99999999999999B+.+A+@+,,,,,+9A@A+@@M@M@M99999999999
99999999999999B:.+A@+++,+,+9A9A++@M@M@MM99999999999
99999999999999B+.+A+@++++++A9A++9M@M@M@M99999999999
99999999999999B:.+A@+@+:+9A9A9A9M@M@M@9M99999999999
0A999999999999B+.+A+@+@+@+@+@A@A@9@9@9@M99999999999
99999999999999B:.+A@+@+@+@+@+@A@M@9@9@9M99999999999
99999999999999B+.+:A@+@+@+@+@A@M@9@9@9M999999999999
99999999999999B:.+:A9@+@+@+@9@A@M@9@9@M999999999999
99999999993333333333M9@9@9@9@9@M@9@9@9M999999999999
99999999993.........MAA99@9@9@M@9@9@9M9999999999999
99999999993...MMMM..MM@9@9@9@9@M@9@9M99999999999999
99999999993....MMM..M:M@9@9@9@9@9@9M999999999999999
99999999993...MMMM..M:9MMM@9@9@9MMM9999999999999999
99999999993..MMM.M..M:9999MMMMMM9999999999999999999
99999999993..MM.....M:99999999999999999999999999999
99999999993..M......M:99999999999999999999999999999
99999999993...M.....MM:9999999999999999999999999999
99999999993.........M9M:999999999999999999999999999
9999999999MMMMMMMMMMMMMM:99999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
99999999999999999999.9999999.9999999999999999999999
9999999....999999999.9999999.99999.999999..99999999
9999999.999.99999999.9999999.99999999999.9999999999
9999999.9999.99...99.9....99....99.9999.99999999999
9999999.9999.9.999.9.9.999.9.999.9.9999....99999999
9999999.9999.9.....9.9.999.9.999.9.9999.999.9999999
9999999.9999.9.99999.9.999.9.999.9.9999.999.9999999
9999999.999.99.999.9.9.999.9.999.9.9999.999.9999999
9999999....9999...99.9....99.999.9.99999...99999999
9999999999999999999999.9999999999999999999999999999
9999999999999999999999.9999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
{根据MSDN的说明,必须从indexMenu位置开始插入菜单,并且菜单的标识符必须在idCmdFirst和idCmdLast之间int idCmd = idCmdFirst;InsertMenu(hMenu,indexMenu++,MF_STRING | MF_BYPOSITION,idCmd++,"Add To Zip...");
InsertMenu(hMenu,indexMenu++,MF_STRING | MF_BYPOSITION,idCmd++,"Add To Zip1...");
InsertMenu(hMenu,indexMenu++,MF_STRING | MF_BYPOSITION,idCmd++,"Add To Zip2...");return (idCmd - idCmdFirst); //返回值必须等于所增加的菜单数目.}
--------------------------------------------------------------------------InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
{
根据MSDN的说明,如果你的DLL被资源管理起调用,那么HIWORD(lpcmi->lpVerb)等于0,这时候LOWORD(lpcmi->lpVerb)等于
菜单标识符,实际上这个值等于所增加的顺序号,如0,1,2...if(!HIWORD(lpcmi->lpVerb))
{
int idCmd = LOWORD(lpcmi->lpVerb);
switch(idCmd)
{
case 0: // "Add To Zip... " 菜单项被调用
case 1: // "Add To Zip1... " 菜单项被调用
case 2: // "Add To Zip2... " 菜单项被调用
}
}
}
-----------------------------------------------------------------------------------STDMETHODIMP TShellExt::QueryContextMenu( HMENU hMenu,UINT indexMenu,
UINT idCmdFirst,UINT idCmdLast,
UINT uFlags)
{
//根据MSDN的说明,必须从indexMenu位置开始插入菜单,并且菜单的标识符必须在idCmdFirst和idCmdLast之间
int idCmd=idCmdFirst;
AnsiString MenuItemStr="定制菜单2"; MENUITEMINFO mii;
char *MenuStr = "定制菜单1"; HMENU hNewMenu = CreateMenu(); AppendMenu(hNewMenu,MF_STRING,idCmd++,"子菜单1");
AppendMenu(hNewMenu,MF_STRING,idCmd++,"子菜单2");
AppendMenu(hNewMenu,MF_STRING,idCmd++,"子菜单3"); mii.cbSize = sizeof(MENUITEMINFO);
mii.fMask = MIIM_SUBMENU | MIIM_TYPE | MIIM_ID;
mii.wID = idCmd++;
mii.fType = MFT_STRING;
mii.hSubMenu = hNewMenu;
mii.dwTypeData = MenuStr;
mii.cch = sizeof(MenuStr); //定制菜单1 含有子菜单
InsertMenuItem(hMenu,indexMenu++,true,&mii); //独立的菜单项
InsertMenu(hMenu,indexMenu++,MF_STRING | MF_BYPOSITION,idCmd++,MenuItemStr.c_str()); return HRESULT(idCmd-idCmdFirst); ////返回值必须等于所增加的菜单数目.}
//---------------------------------------------------------------------------
STDMETHODIMP TShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
{
// 根据MSDN的说明,如果你的DLL被资源管理起调用,那么HIWORD(lpcmi->lpVerb)等于0,
// 这时候LOWORD(lpcmi->lpVerb)等于菜单标识符,实际上这个值等于所增加的顺序号,
// 如0,1,2... int idCmd; if(!HIWORD(lpcmi->lpVerb))
{
idCmd=LOWORD(lpcmi->lpVerb); switch(idCmd)
{
case 0: //”子菜单1“被调用
case 1: //“子菜单2”被调用
case 2: //”子菜单3“被调用// case 3: //“定制菜单1”的标识符,因为含有子菜单,所以该菜单项不可能被激活 case 4: //”定制菜单2“被调用
}
}
}
//---------------------------------------------------------------------------
//注意这一步不能少。STDMETHODIMP TShellExt::GetCommandString(UINT idCmd,
UINT uFlags,
UINT FAR *reserved,
LPSTR pszName,
UINT cchMax)
{
// MessageBox(NULL,AnsiString("IdCmd="+IntToStr(idCmd)).c_str(),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
if(idCmd==0)
{
lstrcpy(pszName,"子菜单1");
}
else if(idCmd==1)
{
lstrcpy(pszName,"子菜单2");
}
else if(idCmd==2)
{
lstrcpy(pszName,"子菜单3");
} return NOERROR;
}
//---------------------------------------------------------------------------