-
Windows右键菜单中添加自己的命令
2010-05-13 10:50:00在Windows操作系统中安装WinRAR后,右击一个文件弹出的菜单中会出现“添加到 XXX.RAR”等菜单项。它是怎么做到的呢。下面听我详细讲来。 修改右键菜单需要动注册表了。一般地说,只要是在windows系统中已注册过的...在Windows操作系统中安装WinRAR后,右击一个文件弹出的菜单中会出现“添加到 XXX.RAR”等菜单项。它是怎么做到的呢。下面听我详细讲来。
修改右键菜单需要动注册表了。一般地说,只要是在windows系统中已注册过的扩展名,在HKEY_CLASSES_ROOT下均有“·该扩展名”子键 ,记录该扩展名的一些信息,对某种特定类型的文件的右键菜单的修改,便是在该键或“扩展名file”键下的操作。当然如果要对所有类型的文件修改便是在HKEY_CLASSES_ROOT/*下添加相应命令。
下面我举个例子来说明。
做过VB开发的朋友肯定不会不熟悉Regsvr32这个命令,你是不是很烦不停在运行命令中注册和反注册一些控件。下面我们专门针对.dll和.ocx这再从类文件添加注册和反注册再从个命令。添加成功后您就可以方便地在任何dll类型的右击菜单上注册或反注册这些动态库了,听起来的确很爽!
打开注册表,找到HKEY_CLASSES_ROOT/dllfile。在dllfile下新建
shell/Regsvr32/command ,command的键值是regsvr32 %1
相应地再建一个反注销的命令
shell/Regsvr32/command ,command的键值是regsvr32 %1 -u
添加后的效果如下图
相信针对ocx已经不用我说了吧。呵呵!
看看修改后的效果吧
快去试试吧。。
-
MFC学习日记七:Mfc动态(静态)设置菜单项
2012-02-22 20:57:24当我们要设置一个菜单不可用时,系统会发出一条消息WM_INITMENUPOPUP(可以理解为初始化菜单项弹出窗口消息) ,在此说明Mfc的命令更新仅适用于即弹出式菜单项(子菜单栏上的子菜单项),不能用于永久显示的菜单栏的...Mfc命令更新机制:
在应用程序中,菜单栏是一直要显示的,所以就要实时去更新它,显示它的即时状态(可用/不可用)。当我们要设置一个菜单不可用时,系统会发出一条消息WM_INITMENUPOPUP(可以理解为初始化菜单项弹出窗口消息) ,在此说明Mfc的命令更新仅适用于即弹出式菜单项(子菜单栏上的子菜单项),不能用于永久显示的菜单栏的菜单项(如上图所示);然后MFC的基类CFrameWnd接管这个消息,并且它创建一个CCmdUI对象与第一个菜单项相关联,调用一个成员函数DoUpdate()。这个函数发出CN_UPDATE_COMMAND_UI消息,这个消息带有一个CCmdUI类型的指针,它会去检测是否有接管这个消息的宏ON_UPDATE_COMMAND_UI,有就去调用对应的响应函数(即消息映射原理)进行处理,执行完成之后这个一开始创建的CCmdUI对象会与第二个菜单项相关联,执行同样的操作...依次下去。
菜单栏菜单项的ID与工具栏的ID如果相同,则设置这个ID对应的菜单项不可用,对应菜单项和工具栏的工具项都会不可用。即如果想要把工具栏上的图标与菜单栏的菜单项相关联,只需要把他们的ID设置为一样的就可以了。
设置菜单栏中的子菜单项剪切从不可用变为可用(从灰的变为黑色的可点击项):
pCmdUI->Enable(); //CCmdUI的成员函数
也可以做更高级的判断以下为设置新建菜单项不可用:
void CMainFrame::OnUpdateFileNew(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here // if(ID_FILE_NEW==pCmdUI->m_nID) //用ID判断是否为新建菜单项,m_nID为CCmdUI的成员变量 // pCmdUI->Enable(FALSE); if(0==pCmdUI->m_nIndex) //用索引序号判断是否为新建菜单项,这种判断不能与工具条中的图标相关联 pCmdUI->Enable(FALSE); }
设计一个右键弹出静态菜单:
1、首先在Resource(资源)下的Menu中新建一个菜单,双击用户界面编辑窗口中的手动增加菜单,再弹出的对话窗中填写右键菜单的父项(这个不会显示在实际应用程序 中),随便输入一个caption(标题),在其子项中添加我们想要的右键弹出菜单子项(即会在应用程序中显示);
2、要建立一个右键弹出菜单,就要响应鼠标右键消息,这里需要在CTestView类中增加一个WM_RBUTTONDOWN消息的响应函数OnRButtonDown(),在这个函数中,需要用 到一个函数来显示我们的菜单,在msdn中查到BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );参数分别是菜单显示的位置 (当弹出菜单显示的时候,鼠标是在弹出菜单的正中间还是左上角还是右上角等等)、xy是鼠标右键点击位置的xp坐标、这个弹出菜单输入哪个窗口、一个弹出菜单鼠标点击 时也保持显示的区域;特别注意这里的x/y坐标默认是整块屏幕的坐标,我们需要把它转移到应用程序窗口中来,这里要用一个msdn中查到的函 数:ClientToScreen(LPPOINT lpPoint )。
void CMenu2View::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CMenu menu; //定义一个菜单变量 menu.LoadMenu(IDR_MENU1); //加载设计好的菜单 CMenu* pPopup=menu.GetSubMenu(0); //定义菜单指针获取第一个子菜单栏 ClientToScreen(&point); //转移坐标系到应用程序窗口中来 pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, GetParent()); //显示右键弹出菜单,GetParent()写到弹出菜单是CMainFrame拥有,当CTestView类中没有弹出菜单子项点击的响应函数的时候会去CMainFrame //类中查找相应的响应函数;如果这里写的是this,那么不会去检查CMainFrame类中是否有弹出菜单子项的响应函数(可以在两个类中都加上响应函数试一下) CView::OnRButtonDown(nFlags, point); }
用代码动态添加左键弹出菜单:
1、这里需要在CMainFrame框架类的OnCreate函数中去添加,这里我们在msdn中查到 兩个函数,这个函数可以实现两种方式的添加;
2、一种是在上图所示的帮助后面追加一个菜单项:
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );这个函数的参数分别表示:
1):添加菜单的类型(有MF_POPUP(弹出菜单)、MF_SEPARATOR(分隔符)、 MF_STRING(字符串));
2):Specifies either the command ID of the new menu item or, if nFlags is set to MF_POPUP, the menu handle (HMENU) of a pop-up menu. The nIDNewItem parameter is ignored (not needed) if nFlags is set to MF_SEPARATOR.(如果第一个参数设置为MF_POPUP(弹出菜 单)的时候,这个参数就是这个弹出菜单的一个CMenu的句柄,设置为MF_SEPARATOR(分隔符)时,这个参数可以省略,设置为MF_STRING时,这个参数表示菜单项的ID);
3):是菜单项的名称
3、
CMenu menu; menu.CreatePopupMenu(); //创建一个空的弹出菜单与一个CMenu 变量相关联 //GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"WinSun"); //将弹出 菜单添加到上图中的帮助后面 GetMenu()->InsertMenu(2,MF_BYPOSITION|MF_POPUP,(UINT)menu.m_hMenu, "WinSun"); //将弹出菜单插入到到第二个菜单项(即上图中的编辑)的后面,这里是通过索引编号进行定位 menu.AppendMenu(MF_STRING,IDM_HELLO,"Hello");//添加一个ID为 IDM_HELLO的字符串类型菜单项到WinSun弹出菜单的子项中 menu.AppendMenu(MF_STRING,112,"WangDong"); menu.AppendMenu(MF_STRING,113,"Mybole"); //************Detaches a Windows handle from a CWnd object and returns the handle.(意思是解开一个CWnd对象窗口的句柄,返回一个句柄 menu.Detach();//这里就是防止OnCreate函数执行完后menu对象析构而造成的错误 GetMenu()->GetSubMenu(0)->AppendMenu(MF_STRING,114,"Welcome");//这里是 在菜单栏的第一个菜单的子菜单中最后追加一个字符型的菜单项Welcome GetMenu()->GetSubMenu(0)->InsertMenu(ID_FILE_OPEN,MF_BYCOMMAND | MF_STRING, 115,"王东");//通过ID编号进行插入一个字符型的子菜单项 GetMenu()->DeleteMenu(1,MF_BYPOSITION);//删除菜单栏中的第二个菜单项(即 编辑) GetMenu()->GetSubMenu(0)->DeleteMenu(2,MF_BYPOSITION);//删除菜单栏中第 一个菜单项下的第3个子菜单项(即打开)
现在设计好了弹出菜单,就需要对弹出菜单项进行命令响应:
想法:首先需要获取到我们想要响应的菜单项,这里就需要去VC编辑器坐下变的FILEVIEW中,在Header Files里的Resource.h添加一条声明ID的宏,是
#define IDM_HELLO 111
这样就将ID为111的Hello菜单项的宏设置为IDM_HELLO,然后由于前面是代码添加的菜单,所以无法在资源编辑器中手动点击ClassWizard来添加消息响应函数,这里就模仿之前点击添加消息响应函数所产生的代码(即消息响应机制):
实现:
1、首先在CMainFrame框架类的头文件的声明消息映射DECLARE_MESSAGE_MAP()之前加入消息响应函数原型声明afx_msg void OnHello();
2、然后在CMainFrame框架类的源文件的BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间加入消息响应函数的一个宏ON_COMMAND(IDM_HELLO,OnHello) //注意 这里不能加分号。
3、然后在CMainFrame框架类的源文件的后面定义消息响应函数:
void CMainFrame::OnHello() { MessageBox("Hello!"); }
这样就完成了我们代码添加的菜单项的消息响应。
-
MFC有关菜单的编程实现
2012-09-18 20:36:38静态菜单操作包括标记菜单,默认菜单,图形菜单的实现原理及具体实现,快捷弹出菜单的实现方式及其命令响应函数的添加。 动态菜单操作主要包括:如何让程序运行时产生新的子菜单和菜单项,以及如何手工地为这些新...本节学习了菜单编程方面的内容,包括静态菜单操作和动态菜单操作两大块。
静态菜单操作包括标记菜单,默认菜单,图形菜单的实现原理及具体实现,快捷弹出菜单的实现方式及其命令响应函数的添加。
动态菜单操作主要包括:如何让程序运行时产生新的子菜单和菜单项,以及如何手工地为这些新产生的菜单项命令添加消息响应处理函数。
本节还实现了如何在顶层窗口,即框架类窗口中截获对菜单命令的处理。
通过这节还应该了解Windows中消息的分类,以及菜单命令消息的路由过程,进一步熟悉Cstring类的应用。
静态菜单操作
//1.标记菜单(2种方法)
//GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION| MF_CHECKED); //通过菜单项的索引设置一个标记菜单
//GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND| MF_CHECKED); //通过菜单项的标识设置一个标记菜单
//2.默认菜单
//GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE); //通过菜单项的索引设置一个默认菜单,最后一个参数为TRUE
//GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN,FALSE); //通过菜单项的标识设置一个默认菜单最后一个参数为FALSE
//GetMenu()->GetSubMenu(0)->SetDefaultItem(5,TRUE); //设置打印菜单项时索引时5,不是4,因为分隔栏在子菜单中是占据索引位置的
//一个子菜单只能有一个默认菜单项
//3.图形标记菜单
/*CStringstr;
str.Format("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));
//CString类的Format函数可以按照一定的格式把内容格式化,然后将结果保存到CString类型的字符串对象中
//GetSystemMetrics()函数可以取得窗口上各种资源的尺寸,根据参数决定
//根据取得的尺寸信息可知,位图大小应该是13*13;
MessageBox(str);*/
//m_bitmap.LoadBitmap(IDB_BITMAP1);
//GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);//运行程序发现不显示位图,
//原因在于位图太大,只是显示了位图左上角的一小部分内容。
//4.禁用菜单项
//GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION |MF_DISABLED | MF_GRAYED);
//GetMenu()->GetSubMenu(0)->EnableMenuItem(ID_FILE_OPEN,MF_BYCOMMAND| MF_DISABLED | MF_GRAYED);
//在构造函数中修改成员变量才能使这行代码起作用m_bAutoMenuEnable= FALSE;
//MF_DISABLED| MF_GRAYED这两个标志一起使用
//5.移除和装载菜单
//SetMenu(NULL);//移除
//装载
//CMenumenu;
//menu.LoadMenu(IDR_MAINFRAME);
//SetMenu(&menu);
//menu是个局部变量,在程序运行时,点击“打印预览”,关闭“打印预览”,再关闭程序,程序会报错
//解决办法是把menu定义为CMainFram类的成员变量
//还可以用Detach函数把菜单句柄与这个菜单对象分离
//menu.Detach();
return0;
}
//m_bAutoMenuEnable= FALSE;
//一旦在CMainFrame类的构造函数中把成员变量m_bAutoMenuEnable =FALSE;后,就不需要对ON_UPDATE_COMMAND_UI
//或ON_COMMAND消息进行响应处理了,CMenu类的EnableMenuItem函数将能正常工作。
//但是在Menu程序编辑子菜单下的几个菜单项不在以灰色显示了,因为m_bAutoMenuEnable= FALSE后,
//MFC就不在利用它的菜单命令更新机制去判断哪个菜单可以使用,哪个菜单不能够使用,所以其也就不能根据菜单项的状态以不同的外观
//来显示。而菜单能否使用这些判断操作,就需要我们自己去完成了
//说实话,命令更新机制讲的不清楚啊!不明白啊!
//6.MFC菜单命令更新机制
//在消息映射中添加ON_UPDATE_COMMAND_UI宏来捕获CN_UPDATE_COMMAND_UI消息
void CMainFrame::OnUpdateEditCut(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
//pCmdUI->Enable();//在这样的消息中带有一个指向CCmdUI对象的指针,可以用它调用相应的功能函数
//在工具栏中剪切的标识和菜单栏中的剪切标识是一样,所以两者都被启用了。
if(2== pCmdUI->m_nIndex) //判断当前是否是新建菜单项,实际中无需判断,MFC调用菜单命令更新函数时,已经确定了特定的菜单项。
pCmdUI->Enable();
}
void CMainFrame::OnUpdateFileNew(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
//if(ID_FILE_NEW== pCmdUI->m_nID) //根据标识判断,工具栏中,菜单栏中的剪切都被禁用
if(0== pCmdUI->m_nIndex) //根据索引判断,工具栏中的剪切不被禁用,两者索引不同!
pCmdUI->Enable(FALSE);
}
//如果要在程序中设置某个菜单项的状态,首先通过ClassWizard为这个菜单项添加ON_UPDATE_COMMAND_UI消息响应函数,然后再这个
//函数中进行状态的设置即可!
void CMainFrame::OnShow()
{
//TODO: Add your command handler code here
MessageBox("Mainshow");
}
//动态菜单操作
//1.添加菜单项目
/*CMenumenu;
menu.CreateMenu();//创建一个菜单,然后将其与一个CMenu对象相关联起来。
GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"Test"); //添加菜单项
menu.Detach();//将菜单句柄与菜单对象之间的关联断开*/
//2.插入菜单项目
/*CMenumenu;
menu.CreateMenu();//创建一个菜单,然后将其与一个CMenu对象相关联起来。
GetMenu()->InsertMenu(2,MF_POPUP|MF_BYPOSITION, (UINT)menu.m_hMenu,"Test");
menu.AppendMenu(MF_STRING,IDM_HELLO,"Hello");
menu.AppendMenu(MF_STRING,112,"Bye");
menu.AppendMenu(MF_STRING,113,"Mybole");
menu.Detach();
GetMenu()->GetSubMenu(0)->AppendMenu(MF_STRING,114,"Welcome");
GetMenu()->GetSubMenu(0)->InsertMenu(ID_FILE_OPEN,MF_STRING| MF_BYCOMMAND,115,"VC编程");
//3.删除菜单
GetMenu()->DeleteMenu(1,MF_BYPOSITION);
GetMenu()->GetSubMenu(0)->DeleteMenu(2,MF_BYPOSITION);*/
//4.动态添加的菜单项的命令响应
void CMainFrame::OnHello()
{
MessageBox("Hello");
}
ON_COMMAND(IDM_HELLO,OnHello)
afx_msg void OnHello();
//5.电话本示例程序
void CMenu2View::OnChar(UINT nChar, UINTnRepCnt, UINT nFlags)
{
CClientDCdc(this);
if(0x0d== nChar)
{
if(0== ++m_nIndex)
{
m_menu.CreatePopupMenu();
GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)m_menu.m_hMenu,"phoneBook");//菜单是框架类窗口的,要用GetParent()
//取到框架窗口的指针
GetParent()->DrawMenuBar();//取得框架窗口的指针,然后重绘菜单栏,才会在按下回车键后显示先添加的菜单!
//在CMainFrame中不需要这样做,是因为代码是在OnCreate中添加的,窗口还未创建完成
//而此时窗口已经创建完成
}
m_menu.AppendMenu(MF_STRING,IDM_PHONE1+ m_nIndex,m_strLine.Left(m_strLine.Find(' ')));//取得输入的内容空格以前的内容,添加到菜单项中
m_strArray.Add(m_strLine);//m_strArray是定义的一个CStringArray的集合类
//MFC为我们提供了一些非常有用的集合类,这些集合类类似于数组的功能,但他们可以很方便的动态增加和删除元素。
m_strLine.Empty();//在按下回车键后,清空字符串的内容,再次输入时显示的就是新输入的,不会在先前的后面输出了
Invalidate();//让窗口的整个客户区无效,这样,当下一条WM_PAINT消息发生时,窗口就会被更新。不然再次输入的内容
//会再先前输入的内容上面显示。默认参数是TRUE,在窗口重绘时就会把窗口的背景擦除掉。为FALSE时保留窗口的背景
}
else
{
m_strLine+= nChar;
dc.TextOut(0,0,m_strLine);
}
CView::OnChar(nChar,nRepCnt, nFlags);
}
void CMenu2View::OnPhone1()
{
//TODO: Add your command handler code here
CClientDCdc(this);
dc.TextOut(0,0,m_strArray.GetAt(0));
}
void CMenu2View::OnPhone2()
{
//TODO: Add your command handler code here
CClientDCdc(this);
dc.TextOut(0,0,m_strArray.GetAt(1));
}
void CMenu2View::OnPhone3()
{
//TODO: Add your command handler code here
CClientDCdc(this);
dc.TextOut(0,0,m_strArray.GetAt(2));
}
void CMenu2View::OnPhone4()
{
//TODO: Add your command handler code here
CClientDCdc(this);
dc.TextOut(0,0,m_strArray.GetAt(3));
}
ON_COMMAND(IDM_PHONE1,OnPhone1) //这些代码要放到注释宏外面,如果放在里面,在ClassWizard对话框中,在Message Maps选项卡下
ON_COMMAND(IDM_PHONE2,OnPhone2) //的Member functions列表中就会列出这些函数,放在外面就不会列出来。当ClassWizard发现
ON_COMMAND(IDM_PHONE3,OnPhone3) //菜单项已经被删除了的时候,它就会把已为该菜单项添加的消息映射宏也删除了,这样,消息映射宏
ON_COMMAND(IDM_PHONE4,OnPhone4) //的三个环节就断了一环,程序就会出错。
afx_msgvoid OnPhone1(); //放在两个注释宏之间也没有错
afx_msgvoid OnPhone2(); //但为了区分这是自己手动添加的,可以把它们拿出来放在两个AFX_MSG注释宏之后。
afx_msgvoid OnPhone3();
afx_msgvoid OnPhone4();
-
dw添加下拉菜单_Dreamweaver怎么创建下拉菜单
2021-01-17 18:32:01点击鼠标,将光标放在表单框线内,点击“插入”菜单,选择“表单”项,在弹出的子菜单中选择“选择(列表/菜单)”命令。或者在“插入”面板中选择“表单”项,点击“选择(列表/菜单)”图标,如下图所示: 点击“窗口...一、在Dreamweaver中创建弹出式菜单
1. 点击鼠标,将光标放在表单框线内,点击“插入”菜单,选择“表单”项,在弹出的子菜单中选择“选择(列表/菜单)”命令。
或者在“插入”面板中选择“表单”项,点击“选择(列表/菜单)”图标,如下图所示:
点击“窗口”菜单,选择“插入”项,可以打开“插入”面板。
2. 点击“选择(列表/菜单)”图标后,弹出“输入标签辅助功能属性”对话框,在对话框中设置后,单击“确定”按钮,“选择(列表/菜单)”出现在文档中。
3. 在文档中点击“选择(列表/菜单)”表单控件,如下图所示:
在“代码”视图中可以查看源代码:
4. 打开选择(列表/菜单)“属性”面板,如下图所示:
5. “选择”项:输入名称。name属性。
6. “类型”项:选择菜单。
7. “列表值”按钮:点击“列表值”按钮添加菜单选项,出现“列表值”对话框,如下图所示:
8. 将光标放在“项目标签”列表中,输入需要在列表中出现的文本。
9. 在“值”列表中输入选取该项目时要发送给服务器的文本或数据。value属性。
10. 如果还要添加其他项目,点击“+”按钮,然后重复第8和第9步。如果选择某一项,点击“-”按钮,即可删除那一项。
11. 单击向上、向下按钮对项目进行排序。
12. 添加项目结束时,点击“确定”按钮关闭“列表值”对话框。
13. 在“初始化时选定”文本框中选择该菜单的默认列表项。selected属性。
14. 在“代码”视图中可以查看源代码:
网页制作
网络编程
二、提示
将光标定位到表单的红色虚线围成的框内,按回车(Enter)键,可以添加多个弹出式菜单。
-
孙鑫视频---菜单
2019-01-11 09:04:00标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的... -
(孙鑫 6)菜单
2014-03-26 23:30:37标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的... -
【开发技巧系列】绿色程序添加到右键菜单
2019-09-25 12:37:411、运行regedit命令打开注册表管理器2、找到右键项目注册表“HKEY_CLASSES_ROOT”旗下子菜单作用分别为:HKEY_CLASSES_ROOT\*\shell 对任意文件单机右键弹出的菜单的菜单项HKEY_CLASSES_ROOT\folder\shell 对一般... -
vc 菜单
2011-01-08 23:02:00弹出菜单(Pop-up)是不能用来作命令响应的。 2.MFC中菜单项消息如果利用ClassWizard来对菜单项消息分别在上述四个类中进行响应,则菜单消息传递顺序:View类--Doc类--CMainFrame类--App类。菜单消息一旦在其中... -
把程序添加到右键菜单
2012-07-31 23:11:131、运行regedit命令打开注册表...HKEY_CLASSES_ROOT\*\shell 对任意文件单机右键弹出的菜单的菜单项 HKEY_CLASSES_ROOT\folder\shell 对一般文件夹和系统文件(文件夹和驱动器)的右键弹出菜单都起作用 HKEY_CLA -
【转】把程序添加到右键菜单
2016-04-28 10:14:001、运行regedit命令打开注册表管理器2、找到右键项目注册表“HKEY_CLASSES_ROOT”旗下子菜单作用分别为:HKEY_CLASSES_ROOT\*\shell 对任意文件单机右键弹出的菜单的菜单项HKEY_CLASSES_ROOT\folder\shell 对一般... -
第十六讲 菜单管理
2007-11-12 15:02:00例17:本例在蓝色的背景上绘制一个白色的正方形,在窗口内单击鼠标右键,弹出菜单,当选择不同菜单项时命令窗口会显示出是哪个菜单的哪个菜单相被激活。本例一个主菜单,主菜单有3个菜单条目及两个子菜单。两个子... -
VC++深入详解(4):MFC菜单设计
2012-10-11 08:24:44首先,菜单是一种资源,在资源视图中,我们可以找到默认的单文档...而点击子菜单的“打开”、“新建”等内容,可以响应命令这些内容称为菜单项。 我们发现,不论是新建的菜单,还是子菜单,在最后总有一个虚线框起来的 -
自动生成VBA窗体菜单
2010-08-16 15:23:46Public MenuCount As Integer '子菜单数量 Public hForm As Long '窗口句柄 Public intLevel As Integer '级别标识,用于设置Radio菜单(游戏菜单中:初级,中级,高级) Public bAbortEnabled As Boolean '标识放弃菜单项... -
UltraEdit的标签不见了解决方案
2011-04-18 09:48:17弹出菜单配置对话框, 展开左侧[菜单]的[视图]项,在这里由[新建菜单/子菜单]创建一个子菜单,然后在右侧的[命令]里找到[打开文件标签]命令,拖到刚才创建的子菜单里即可。重启软件,点击那个创建的菜单~ 如果还... -
VC++孙鑫视频笔记(六)
2010-08-22 17:15:00标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的... -
UltraEdit 标签(tab)不见的3个解决办法
2010-07-14 16:18:00展开左侧[菜单]的[视图]项,在这里由[新建菜单/子菜单]创建一个子菜单,然后在右侧的[命令]里找到[打开文件标签]命令,拖到刚才 创建的子菜单里即可。 以此可以创建很多命令菜单…… 方法3: 删除C:/... -
孙鑫mfc学习笔记第六课
2010-08-24 23:08:32标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的... -
UltraEdit的文件标签不见了
2009-08-17 09:28:00找到了一个方法找回失落的文件标签栏……[高级/配置]->[工具栏/菜单]->[定制/定制菜单]->弹出菜单配置对话框,展开左侧[菜单]的[视图]项,在这里由[新建菜单/子菜单]创建一个子菜单,然后在右侧的[命令]... -
C#窗体控件更新(八)
2011-11-19 20:33:2323、菜单控件 Windows 的菜单系统是图形用户界面(GUI)的重要组成之一,在 VisualC#中使用 MainMenu 控件可以很 方便地实现Windows的菜单,MainMenu控件在...某个菜单项后弹出的称为菜单或子菜单,它们均包含... -
二进位注册文件_指定的文件不是注册脚本注册表编辑器中只能导入二进位注册文。怎么办?...
2020-12-24 10:44:19作为备份功能,我们可以在Regedit编辑器下单击“注册表”菜单下的“导出注册表文件”命令,并选择导出范围为“全部”,将注册表文件备份在硬盘上。而作为一般的备份工作,在Regedt32中就可以...接着弹出“保存项”... -
永中Office—公文的邮寄
2012-05-24 16:55:35选择【文件】菜单【新建】命令下的【本机上的模板…】子命令,弹出【新建】对话框,如图 选择所需模板 在【新建】对话框中选择【文字处理】选项卡,双击【信封模板】文件夹,显示出系统内提供的所有信... -
2—1 VB6.0的集成开发环境
2009-12-30 17:48:58工具栏的设置可以通过“视图”菜单中的“工具栏”子菜单中的各菜单项来完成。通过改变“视图”菜单中的各个选项可以浏览其他工具栏。 三、可视化控件工具栏 控件工具栏也称为控件工具箱,其中包含了众多的控件。...