几个关于多文档应用程序菜单的有关问题

几个关于多文档应用程序菜单的问题
1.多文档应用程序里面有窗口时对应的是子框架的菜单,我想实现使某个菜单无效并变灰这种效果。查到介绍的GetMenu()->GetSubMenu()->EnableMenuItem() ;但是MSDN中说GetMenu()如果调用窗口是Child window的话返回值不确定,就是只能由主框架窗口调用,这样的话得到的菜单是IDR_MAINFRAME标识的吧?还有一个GetSystemMenu()函数,我用着也不行啊。
2.我想实现点击一个菜单,同时实现我写的功能和新建文档功能,怎么写?
3.深入浅出MFC里第七章讲的注册文件类型,然后可以通过双击文件或通过鼠标将文件拖拽进自己的程序实现打开的功能。我照着书上添加了三条代码:
m_pMainWnd->DragAcceptFiles();
EnableShellOpen();
RegisterShellFilTypes();
最后的问题是我拖拽什么类型的文件进去都不会有什么异常提醒,按理应该是书上讲的如果拖进去的不是自己注册的类型那么会弹出提示框,说非预期文件格式。
谢谢大家不吝赐教。
多文档 菜单

------解决方案--------------------
1.菜单无效要用消息映射
ON_UPDATE_COMMAND_UI

2.这个首先要去资源管理器中编辑菜单,形成新的资源编号
消息映射中
ON_COMMAND(新的资源编号,触发函数)   //触发函数不带参数的

3.你没对文件名的后缀做验证?
------解决方案--------------------
2楼说的不错,只是第3点我补充一下,拖拽什么类型的文件进去都不会有什么异常提醒,那是你新建一个多文档工程时,Doc类的Serialize函数没做任何事情,没有文件的读写,当然不会报异常
void CXXXDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}