给系统菜单添加一个菜单项需要进行下述三个步骤:-------------------------------------------------------------------------------- 首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000; 其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加两个新的 int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct) { … //Make sure system menu item is in the right range. ASSERT (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM) ASSERT (IDM-MYSYSITEM < 0xf000) //Get pointer to system menu. CMenu* pSysmenu=GetSystemmenu (FALSE) ASSERT_VALID (pSysMenu) //Add a separator and our menu item to system menu. CString StrMenuItem (_T ("New menu item")) pSysMenu->Appendmenu (MF_SEPARATOR) pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem) … } 现在,选择系统菜单项时用户应进行检测。使用ClassWizard处理WM_SYSCOMMAND消息并检测用户菜单的nID参数: void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam) { //Determine if our system menu item was selected. if ( (nID & 0xFFF0)==IDM_MYSYSITEM) { //TODO-process system menu item } else CMDIFrameWnd ::OnSysCommand (nID, lParam) } 最后,一个设计良好的UI应用程序应当在系统菜单项加亮时在状态条显示一个帮助信息,这可以通过增加一个包含系统菜单基ID的串表的入口来实现。-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 在右键菜单中添加item可以用一个com,楼上所说的方法都是那样,也可以直接修改注册表,如下注册文件: REGEDIT4[HKEY_CLASSES_ROOT\.dll] @="dllfile"[HKEY_CLASSES_ROOT\dllfile\shell\Register Component\command] @="regsvr32 \"%L\""将上面代码拷贝到一个文本文件中,save as a.reg,运行a.reg即可在右键菜单添加一项,以后再右键点击一个dll文件的时候将看到Register component菜单,点击该菜单将执行动态库注册。 http://www.csdn.net/expert/topic/1015/1015222.xml?temp=.2947657
找其他的也找不到,很奇怪,这是写在那个键值下的啊??
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;
其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加两个新的
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
{
…
//Make sure system menu item is in the right range.
ASSERT (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM)
ASSERT (IDM-MYSYSITEM < 0xf000)
//Get pointer to system menu.
CMenu* pSysmenu=GetSystemmenu (FALSE)
ASSERT_VALID (pSysMenu)
//Add a separator and our menu item to system menu.
CString StrMenuItem (_T ("New menu item"))
pSysMenu->Appendmenu (MF_SEPARATOR)
pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem)
…
}
现在,选择系统菜单项时用户应进行检测。使用ClassWizard处理WM_SYSCOMMAND消息并检测用户菜单的nID参数:
void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam)
{
//Determine if our system menu item was selected.
if ( (nID & 0xFFF0)==IDM_MYSYSITEM)
{
//TODO-process system menu item
}
else
CMDIFrameWnd ::OnSysCommand (nID, lParam)
}
最后,一个设计良好的UI应用程序应当在系统菜单项加亮时在状态条显示一个帮助信息,这可以通过增加一个包含系统菜单基ID的串表的入口来实现。--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
在右键菜单中添加item可以用一个com,楼上所说的方法都是那样,也可以直接修改注册表,如下注册文件:
REGEDIT4[HKEY_CLASSES_ROOT\.dll]
@="dllfile"[HKEY_CLASSES_ROOT\dllfile\shell\Register Component\command]
@="regsvr32 \"%L\""将上面代码拷贝到一个文本文件中,save as a.reg,运行a.reg即可在右键菜单添加一项,以后再右键点击一个dll文件的时候将看到Register component菜单,点击该菜单将执行动态库注册。
http://www.csdn.net/expert/topic/1015/1015222.xml?temp=.2947657