潮阳汽车网

    想要修改主菜单的弹出菜单的文本,但是失败了~~

    发布时间:2020-03-21

    C

    回复:

    GetMenu(),是得到一个窗口的菜单的句柄。CreateWindow里面有个参数就是设置这个的,MDI/SDI程序都可以通过这个获取主菜单句柄。DLG程序如果有菜单,一样可以获取。
    如果是系统菜单——,程序图标的弹出菜单,使用GetSystemMenu。获取主菜单句柄。
    如果是右键菜单,大都是临时生成的句柄,不容易得到。除非是实现生成的一个句柄,右键点时候直接使用的。那就能知道这个句柄的值了。
    GetMenuItemCount获取菜单项的个数。 GetMenuItemID GetMenuItemInfo GetMenuString等都是获取菜单句柄的某项的数据信息。

    GetSubMenu 应该就是你要的函数来,得到子菜单的句柄,比如你要得到弹出菜单的子菜单,就用这个,就能得到子菜单句柄。再根据上面的获取子项的函数,来获取子菜单信息。
    (具体看MSND,上面说明很详细,还有例子)

    回复:

    你的代码我试过了,是没有问题的。这是我的代码:
    void CMainFrame::OnTest()
    {
    // TODO: Add your command handler code here
    CWnd* pMain = AfxGetMainWnd();
    if (pMain != NULL)
    {
    CMenu* pMenu = pMain-> GetMenu(); //这里永远为空
    pMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND , ID_FILE_NEW, "MenuTitle");
    }
    }

    对菜单的状态和文字进行修改,其实不需要这样做,直接为相应的菜单添加UPDATE_COMMAND_UI消息即可,例如在CMainFrame中,可以这样写(这只是更改菜单的几个示例):
    void CMainFrame::OnUpdateFileNew(CCmdUI* pCmdUI)
    {
    pCmdUI->Enable(FALSE); // 使菜单无效
    pCmdUI->SetCheck(TRUE); // 前面加小勾
    pCmdUI->SetText("Close"); // 更改文本
    }

    回复:

    D

    回复:

    错误可能是这儿,AfxGetMainWnd得到的不是你主线程的主窗口。
    你的这段代码的是否在主线程里面执行?如果不是的话,是获取不到主线程绑定的主窗口的。
    ——通过别的方式可以获取。

    回复:

    帮助菜单

    回复:

    你的代码我试过了,是没有问题的。这是我的代码: void CMainFrame::OnTest() { // TODO: Add your command handler code here CWnd* pMain = AfxGetMainWnd(); if (pMain != NULL) { CMenu* pMenu = pMain-> GetMenu(); //这里永远为空 pMenu->...

    回复:

    这里有一个js的多级联动下拉菜单 可以自定义位置和样式 比较实用 里面有教程和源码

    回复:

    中毒了。杀毒。换系统

    上一篇:孕妇葡萄糖(空腹)5.17一小时7.06二小时6.65高了吗 下一篇:是不是过了这个月30号就没有卖大白菜土豆萝卜的了??

    返回主页:潮阳汽车网

    本文网址:http://www.0661car.cn/baidu/view-13404-1.html
    信息删除