孙鑫视频之菜单(下)

如何动态添加删除插入菜单(通过自己敲代码)
CMenu menu;
menu.CreatePopupMenu();
//GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"fuck");
//menu.InsertMenu(2,MF_BYPOSITION,(UINT)menu.m_hMenu,"you");//这样调用是不对的。必须用菜单句柄去调用
GetMenu()->InsertMenu(2,MF_BYPOSITION|MF_POPUP,(UINT)menu.m_hMenu,"you");
menu.AppendMenu(MF_STRING,111,"Hello");
menu.AppendMenu(MF_STRING,112,"world");
menu.Detach();//加这个之后才不会弹出错误
//将这个句柄和CMenu对象断开
GetMenu()->GetSubMenu(0)->AppendMenu(MF_STRING,114,"MFC");//这是给文件子菜单添加菜单项
//也可以插入
GetMenu()->GetSubMenu(0)->InsertMenu(2,MF_BYPOSITION,115,"字东清");
//GetMenu()->GetSubMenu(0)->DeleteMenu(2,MF_BYPOSITION);//用这句再把刚才添加的删除


//动态创建的菜单怎么去增加命令响应呢
//去resource.h里自己#define IDM_HELLO 111,这样,我们就有了一个id号了
//然后去头文件里afx_msg void OnHello();消息原型写完了,接下来是消息映射
//ON_COMMAND(IDM_HELLO,OnHello)
//最后是我们的函数的实现,
//void CMainFrame::OnHello()可以用messagebox测试一下
2.下面我们编写一个电话本程序:
在视图里输入名字空格电话然后就添加到菜单里,反之亦然
  首先要捕获键盘输入onchar消息搞定
CClientDC dc(this);
if(0x0d==nChar)
{
if(0==++m_nIndex)//第一次回车才添加
{
m_menu.CreatePopupMenu();
GetParent()->GetMenu()->AppendMenu(MF_POPUP,
(UINT)m_menu.m_hMenu,"PhoneBook");
GetParent()->DrawMenuBar();
}
m_menu.AppendMenu(MF_STRING,111,m_str.Left(m_str.Find(' ')));
//输入时人名与号码之间有空格,所以找到空格,返回索引,再取字符串的左边
//几个字符,我们就把人名拿出来了
m_str.Empty();
Invalidate();//重绘窗口,让它帮忙擦除文字
}
else//输入的字符串在字符里输出
{
m_str+=nChar;
dc.TextOut(0,0,m_str);
}
加上去了,牛逼啊。哈哈
接下来要把它再显示回来
这里就需要把那些字符串都存起来
用CStringArray这个集合类
m_strArray.Add(m_str);
接下来的就不愿意写了,就到这吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值