以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 编程心得 』   (http://bbs.xml.org.cn/list.asp?boardid=42)
----  vc菜鸟求救对话框!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=42&rootid=&id=69985)


--  作者:elover01
--  发布时间:12/1/2008 5:10:00 PM

--  vc菜鸟求救对话框!
各位大侠,本人刚学vc,很菜,想问一下,怎么在点击菜单的菜单项时,弹出对话框?
如文件下的Load,点Load,弹出对话框。
很着急,盼指点!
--  作者:elfstone
--  发布时间:12/1/2008 9:07:00 PM

--  
以下是引用elover01在2008-12-1 17:10:00的发言:
各位大侠,本人刚学vc,很菜,想问一下,怎么在点击菜单的菜单项时,弹出对话框?
如文件下的Load,点Load,弹出对话框。
很着急,盼指点!

两种方式:
1、先在资源文件中创建一个菜单,然后在程序中创建一个CMenu的对象,使用其成员函数LoadMenu/GetSubMenu来载入资源中的菜单,要对菜单项进行控制的话调用成员函数ModifyMenu/EnableMenuItem等等,然后调用TrackPopupMenu弹出菜单,最后调用DestroyMenu销毁载入的菜单,另外你还需要载入菜单的对话框类的消息循环中加入菜单响应函数,使用ON_COMMAND来完成,这种方式比较麻烦

2、运行中使用CreatePopupMenu动态创建,这里需要一个HMENU句柄和MENUITEMINFO数据结构,MENUITEMINFO用来设定需要什么样的菜单子项,设定后调用InsertMenuItem将子项塞到菜单中,再调用TrackPopupMenuEx弹出菜单,返回值将告诉你菜单点了哪一项,根据这个你可以确定调用哪个函数来响应,最后要调用DestroyMenu销毁句柄

建议你采用第二种方式,全部采用win32 api,简单易行,不清楚的可以查一下msdn


--  作者:elover01
--  发布时间:12/5/2008 6:46:00 PM

--  
真是太感谢了!拼命学习vc中,还真是很麻烦呢,不知道什么时候能学好
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
61.996ms