CMenu CImage ClistCtrl 小结

这些东西以前都用过,可以说都是浅尝辄止。随便接触了一下,不过真正做项目的时候,就会遇到各种各样的问题。好吧,一个一个开始说

第一个:CMenu

菜单使我们经常使用的控件,我们可以把它想象成一棵树,它有子节点;我们可以把某个叶子借点设置为(Popup:false)那么这个菜单变为不可有子节点,并且可以添加消息。可以通过GetSubMenu获取子菜单。

菜单类型:弹出式 和 非弹出式

创建类型:动态创建(CreateMenu(),CreatePopupMenu()) 和 静态加载(不说了)

之后就是把菜单弹出或者加载到窗口上。

菜单弹出:

pMenu->TrackPopupMenu(*,*,*,*)可以把菜单弹出

菜单加载:

CMenu menu;

//创建或者加载

SetMenu(&menu);

menu.Detach();//以前对于这个函数总是疑惑。现在知道,因为menu马上超出作用域了,如果超出了与他相关的东西,都要释放了,与其关联的东西也要释放了。可以把菜单看作是menu的一个成员,类似于CImageList,图片列表是CimageList一个成员;在超出之前解除与menu的关联。就不会被释放了。

菜单的状态设置:

我们可能在需要的时候,把菜单禁用或者可用。这就需要设置菜单的状态了。

有两种方式:

1、

GetMenu()->GetSubMenu(0)->EnableMenuItem(i,MF_BYPOSITION | MF_DISABLED);//根据顺序索引

GetMenu()->GetSubMenu(0)->EnableMenuItem(res[i],MF_ENABLED);//默认根据资源索引

2、网上说相应UPDATE_COMMAND_UI消息,也可以设置菜单的状态


CImage: MSDN介绍说它是CBitmap的增强版,并且它自身有自己DC,以前不知道这个,今天看到StretchBlt函数感到好奇。所以查询了一下。

在进行绘图的时候,需要一个DC,一个画布(画布可以是客户区或者位图),Dc是操作画布的接口。而CImage就同时具备的这两项,这就造成了从Cimage获取的HBITMAP不可以再被选入其他的DC。

CListCtrl:编辑项

要想了解编辑功能,就必须知道CListCtrl::GetEditControl()这个函数。

它可以获取CEit*对象,然后获取其中的内容。

CListCtrl::EditLabel(int index)可以使条目进入编辑状态。

知道这两个函数就可以实现:单击右键->重命名->修改条目信息;

CListCtrl的这个通知:LVN_ENDLABELEDIT,在编辑状态结束时,通知主窗口。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值