一些容易遗忘的小技巧

  <script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

一、.弹出式菜单的快速制作
    步骤1:菜单资源的添加
由于是制作弹出式菜单,所以你可能会采用View as Popup的方式来添加一个弹出式菜单,这里不建议这么做,直接采用默认的编辑方式如下图
    
    步骤2:选择事件
若视图类中添加则选择在WM_CONTEXTMENU消息中定义实现,若其他控件可以选择右键等,看具体情况而定了,自己发挥了。
    步骤3:具体代码如下
 CMenu menu;
 menu.LoadMenu(IDR_FILE_LIST);
 menu.GetSubMenu(0)->EnableMenuItem(ID_ADD_FILE,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
上面的语句只是个菜单项变灰并不使能例子,你可以在这里做一些菜单弹出时的初始化
 menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,ptPos.x,ptPos.y,this);

由于采用GetSubMenu(0)的形式你可以吧系统的所有弹出式菜单都在一个菜单资源中完成了,方便管理。

二、.用户自定义消息的加入
    自定义消息的加入需要四个地方添加代码,例子代码如下,一条语句一个地方哦,别搞错
#define WM_USER_ADD WM_USER+1//这个简单自己想了

ON_MESSAGE(WM_USER_ADD,OnAdd)//CPP文件中的消息映射表BEGIN_MESSAGE_MAP以下

 afx_msg void OnAdd( WPARAM wParam, LPARAM lParam );//CPP对应的.H中,自己找一下类似的地方

void CXXXView::OnAdd( WPARAM wParam, LPARAM lParam ){}//这个实现了,肯定知道吧

好了这样就可以使用SendMessage()来发个消息,就执行相应的代码了。

三、控件消息的安排
    在编写一些界面操作时,经常搞不清一些消息放到什么地方好,若放控件自己类或其父类中时,但又要用到veiw和doc中的一些东西就觉的特别麻烦,要去取主框架等,觉的程序特别乱,还有在一些控件类中include 的mainfrm.h doc.h view.h就会搞的到处编译不通过。好像跟头文件的顺序有关系,不知道大家是不是这样的。
    我这里总结一下我的经验,举个例子,一个单文档程序,有个浮动条(CDialogBar做的所以有资源),浮动条中有个列表,比如双击列表要改变doc的内容,并显示。
    若把消息放到浮动条类或列表自己的类中就要通过全局来获得对doc和view的操作,所以我把消息都定义到view中去,这样操作就简单了。这里有个技巧就是如何方便的把消息放倒view中,如果在类列表中打开类向导再选择view类就看不到控件的id,就无法添加了,但如果你打开资源,按Ctrl+W就可以打开类向导,选择view类,查看控件id,哈哈,是不是有了,这样就成功咯,但这样的后果就是view类可能会变的非常庞大,所以的消息都有他接收了,但至少比编译不通过好啊。
    但如果是自己手工创建的没有资源的控件,那只能自己手工添加了。若不会添加就看看有资源的是如何添加的,对照一下就行了。
    好了希望这点说明对大家有帮助,大家的满意是我工作的动力啊,谢谢大家的支持。
更多的待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值