如何改变MFC顶级菜单(主菜单)文字的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何改变MFC顶级菜单(主菜单)文字的大小相关的知识,希望对你有一定的参考价值。

参考技术A 刚遇到过类似问题,折腾半天也没有满意的结果。我测试的结果是:
1.如果把顶级菜单及其下拉菜单的字体同时进行改变的话是可以做到的(不需要第三方控件,百度即可找到方法);
2.如果仅仅想改变顶级菜单的字体而下拉菜单保持不变的话,死活做不到(第三方控件也没找到现成的)
PS:不要相信那些重写DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)和MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)虚函数的方法,对于仅改变顶级菜单的需求来说,没用。不错

MFC中菜单响应函数如何创建?

参考技术A   MFC基于对话框——右键弹出菜单,并响应函数。\\x0d\\x0a  1、新建一个菜单资源,比如把菜单的ID号为IDR_MENU1。\\x0d\\x0a\\x0d\\x0a  2、在ClassWizard中\\x0d\\x0a\\x0d\\x0a  void CArcSoft_EffectDlg::OnRButtonDown(UINT nFlags, CPoint point)\\x0d\\x0a\\x0d\\x0a  // TODO: Add your message handler code here and/or call default\\x0d\\x0a  CMenu menu; //定义下面要用到的cmenu对象\\x0d\\x0a\\x0d\\x0a  menu.LoadMenu(IDR_MENU1); //装载自定义的右键菜单;\\x0d\\x0a\\x0d\\x0a  CMenu *pContextMenu=menu.GetSubMenu(0); //获取第一个弹出菜单,所以第一个菜单必须有子菜单;\\x0d\\x0a\\x0d\\x0a  CPoint point1;//定义一个用于确定光标位置的位置;\\x0d\\x0a\\x0d\\x0a  GetCursorPos(&point1);//获取当前光标的位置,以便使得菜单可以跟随光标\\x0d\\x0a\\x0d\\x0a  pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point1.x,point1.y,AfxGetMainWnd()); //在指定位置显示弹出菜单;\\x0d\\x0a\\x0d\\x0a  CDialog::OnRButtonDown(nFlags, point1);\\x0d\\x0a\\x0d\\x0a  这时,当右键点击对话框,就可以将菜单调出来了,如何响应菜单项有如下操作:\\x0d\\x0a  3、在资源视图中右键单击菜单项,建立类向导(ClassWizard),此时会弹出一个对话框,点击第二个,加入到已存在的类,按确定。\\x0d\\x0a\\x0d\\x0a  4、在资源视图中为菜单中的每一项建立类向导,并添加Command响应函数,然后在这个函数中加入语句就可以啦。\\x0d\\x0a\\x0d\\x0a  ON_COMMAND(ID_COPY, OnCopy)//加Command响应函数,自动出现的灰色语句\\x0d\\x0a\\x0d\\x0a  void CArcSoft_EffectDlg::OnCopy() \\x0d\\x0a  // TODO: Add your command handler code here\\x0d\\x0a  MessageBox("复制成功!");\\x0d\\x0a\\x0d\\x0a  MFC文档的菜单栏中添加一个command响应函数\\x0d\\x0a\\x0d\\x0a  基于CFormView的应用程序,经常会在菜单栏中添加一个按钮,点击该按钮时,会弹出一个对话框~~\\x0d\\x0a  具体实现方式如下\\x0d\\x0a\\x0d\\x0a  1.新建一个对话框资源,同时新建一个对话框类和该资源对应,舍对话框类名为CTestDialog;\\x0d\\x0a\\x0d\\x0a  2.在资源视图中找到Menu 这个文件夹,双击里面的文件IDR_MAINFRAME,在这里可以添加自己想要的菜单,也可把原来的【文件】、【编辑】等菜单给删掉~~\\x0d\\x0a\\x0d\\x0a  添加菜单的方法:右击右侧空白区域,选择properties,弹出的对话框中,把pop_up勾选掉,添加一个ID和CAPTION,设ID为ID_MYTEST,caption|为【测试】\\x0d\\x0a\\x0d\\x0a  (要注意的是,最好选择View类,而不是Frame类或其他类)\\x0d\\x0a\\x0d\\x0a  3.Ctrl+W弹出类向导,message maps中的class name 选择为View类,\\x0d\\x0a\\x0d\\x0a  从Object IDs中找到我们上一步设置的ID_MYTEST,右侧的message选择Command命令,添加一个命令响应函数;\\x0d\\x0a\\x0d\\x0a  4.在该函数中添加\\x0d\\x0a\\x0d\\x0a  CTestDialog dlg;\\x0d\\x0a\\x0d\\x0a  dlg.DoModal();\\x0d\\x0a\\x0d\\x0a  5.对应的菜单项添加WM_COMMAND消息,在命令响应函数中DoModal/Create/ShowWindow()你的对话框即可。\\x0d\\x0a\\x0d\\x0a  6.消息映射:\\x0d\\x0a\\x0d\\x0a  ON_COMMAND(菜单编号,处理函数)\\x0d\\x0a\\x0d\\x0a  .h\\x0d\\x0a\\x0d\\x0a  public:\\x0d\\x0a\\x0d\\x0a  处理函数\\x0d\\x0a\\x0d\\x0a  .cpp\\x0d\\x0a\\x0d\\x0a  处理函数\\x0d\\x0a\\x0d\\x0a  \\x0d\\x0a\\x0d\\x0a  CDialog dc;\\x0d\\x0a\\x0d\\x0a  dc.domodal();\\x0d\\x0a\\x0d\\x0a  \\x0d\\x0a\\x0d\\x0a  弹出非模态对话框的方法:\\x0d\\x0a\\x0d\\x0a  (1)用类向导给菜单栏中菜单添加一个响应函数\\x0d\\x0a\\x0d\\x0a  (2) 在头文件中加入\\x0d\\x0a\\x0d\\x0a  #include "Dlg.h"\\x0d\\x0a\\x0d\\x0a  public:\\x0d\\x0a\\x0d\\x0a  CDlg *Dlg;\\x0d\\x0a\\x0d\\x0a  (3)在代码中加入\\x0d\\x0a\\x0d\\x0a  Dlg=new CDlg(this);\\x0d\\x0a\\x0d\\x0a  Dlg->Create(IDD_DIALOG1); // IDD_DIALOG1为对应的菜单栏中那个按钮的ID\\x0d\\x0a\\x0d\\x0a  Dlg->ShowWindow(SW_RESTORE);

以上是关于如何改变MFC顶级菜单(主菜单)文字的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何调整chm文字字体大小

MFC中菜单响应函数如何创建?

Qt 中如何改变Label大小

MFC单文档程序的菜单栏怎么修改高度和宽度?

如何在MFC应用程序中添加文档菜单?

新建一个MFC单文档程序含有菜单和工具栏,又建了一个对话框,如何直接显示对话框?