请教,VC6,单文档和多文档的程序中右上角的关闭按钮如何变灰掉 请教,VC6,单文档和多文档的程序中右上角的关闭按钮如何变灰掉。不是隐藏,只是变灰。最小和恢复按钮还是可以用的。总共这3个按钮,其中一个变灰。请教下有几种方法,如何添加代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在初始化函数中添加://获得系统菜单CMenu *pMenu = GetSystemMenu(FALSE);//获得关闭按钮IDint x = pMenu->GetMenuItemCount();UNIT pID = pMenu->GetMenuItemID(x-1);//使关闭按钮无效pMenu->EnableMenuItem(PID , MF_DISABLED); 顺道问下,我知道在基于对话框的程序中关闭程序触发事件的顺序是OnClose()-->PostQuitMessage()--->OnDestry(),在onclose中可以拦截提示是否保存。但是在单文档或者多文档中,没有onclose事件,请教下,该如何处理才可以提示他保存,在OnDestry()中这样做肯定不行,窗口已经关闭了 MainFrame里面加OnClose 事件。 CMainFrame类的OnCreate中加入CMenu* pMenu = GetSystemMenu(FALSE); if(pMenu) { pMenu->EnableMenuItem(SC_CLOSE, MF_GRAYED | MF_DISABLED); } 在~Doc.cpp中加这段代码试试看吧BOOL CEditTestDoc::CanCloseFrame(CFrameWnd* pFrame) { if( p_EditBox->GetModify() ) //检查修改标志 { int t; t=::MessageBox(NULL,"编辑的文字已经改变,要存盘吗?",_T("警告"),MB_YESNOCANCEL | MB_ICONWARNING); if( t==IDCANCEL ) //取消 return false; if( t==IDYES ) //保存 { CString pathName = p_EditBox->GetPathName(); if( pathName.IsEmpty() ) //没有文件打开 { CString sFilter = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"); //限定文件类型 CFileDialog Dialog( false, _T("txt"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, (LPCTSTR)sFilter,NULL );//定制保存文件对话框 if( Dialog.DoModal() == IDOK ) //弹出保存文件对话框 { pathName = Dialog.GetPathName(); p_EditBox->SaveFile( pathName ); //保存文件 } } else p_EditBox->SaveFile( pathName ); } } return CDocument::CanCloseFrame(pFrame);}需要的地方自己改下CanCloseFrame这是重写的事件哦! 这段代码知识给你借鉴下的,很多地方你要自己写,是重写CanCloseFrame实现的! 解决win7下界面刷新问题 多么神奇的数字啊,你也试试! 跪求_tcsstr()函数的源代码 使用xp风格后的几个问题,像工具栏 如何知道一个文件夹是打开的还是关闭的?请高手们指点,谢谢了!! connect()时出错,奇怪的问题 请教! 请指点用VC++开发标准软件安装程序(Setup.exe)方法。 在VC6上能编译再VC2005上却不能通过是怎么回事 怎样将CHAR temp[32]中的内容送到CString中? windows api 密码编辑框 C# 使用SendInput 模拟键盘信息
//获得系统菜单
CMenu *pMenu = GetSystemMenu(FALSE);
//获得关闭按钮ID
int x = pMenu->GetMenuItemCount();
UNIT pID = pMenu->GetMenuItemID(x-1);
//使关闭按钮无效
pMenu->EnableMenuItem(PID , MF_DISABLED);
OnClose()-->PostQuitMessage()--->OnDestry(),在onclose中可以拦截提示是否保存。但是在单文档或者多文档中,没有onclose事件,请教下,该如何处理才可以提示他保存,在OnDestry()中这样做肯定不行,窗口已经关闭了
CMenu* pMenu = GetSystemMenu(FALSE);
if(pMenu)
{
pMenu->EnableMenuItem(SC_CLOSE, MF_GRAYED | MF_DISABLED);
}
{
if( p_EditBox->GetModify() ) //检查修改标志
{
int t;
t=::MessageBox(NULL,"编辑的文字已经改变,要存盘吗?",_T("警告"),MB_YESNOCANCEL | MB_ICONWARNING);
if( t==IDCANCEL ) //取消
return false;
if( t==IDYES ) //保存
{
CString pathName = p_EditBox->GetPathName();
if( pathName.IsEmpty() ) //没有文件打开
{
CString sFilter = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"); //限定文件类型
CFileDialog Dialog( false, _T("txt"), NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, (LPCTSTR)sFilter,NULL );//定制保存文件对话框
if( Dialog.DoModal() == IDOK ) //弹出保存文件对话框
{
pathName = Dialog.GetPathName();
p_EditBox->SaveFile( pathName ); //保存文件
}
}
else
p_EditBox->SaveFile( pathName );
}
}
return CDocument::CanCloseFrame(pFrame);
}
需要的地方自己改下
CanCloseFrame这是重写的事件哦!