禁用cvNamedWindow所创建窗口的系统菜单关闭按钮
来源:互联网 发布:python heatmap 编辑:程序博客网 时间:2024/05/22 14:41
天在写一个MFC程序时,需要临时禁用cvNamedWindow所创建窗口系统菜单上的关闭按钮,开始觉得没什么,直接写代码如下:
HWND hCvWnd=(HWND)cvGetWindowHandle(windowTitle);
CWnd* pCvWnd=CWnd::FromHandle(hCvWnd);
if(pCvWnd!=NULL)
{
CMenu* pSystemMenu=pCvWnd->GetSystemMenu(FALSE);
if(pSystemMenu!=NULL)
pSystemMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);
}
进行测试,没有达到预期目的。开始以为可能是方法不对,用其他几种方法试验,仍达不到预期效果。调试好久,偶然发现使用cvNamedWindow创建窗口时,其实创建了两个窗口,一个容器窗口和一个子窗口,创建时的窗口名称为子窗口的名称。因此将原先的代码修改如下后则可达到预期目的。
HWND hCvWnd=(HWND)cvGetWindowHandle(windowTitle);
CWnd* pCvWnd=CWnd::FromHandle(hCvWnd);
if(pCvWnd!=NULL)
{
CMenu* pSystemMenu=pCvWnd->GetParent()->GetSystemMenu(FALSE);
if(pSystemMenu!=NULL)
pSystemMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);
HWND hCvWnd=(HWND)cvGetWindowHandle(windowTitle);
CWnd* pCvWnd=CWnd::FromHandle(hCvWnd);
if(pCvWnd!=NULL)
{
CMenu* pSystemMenu=pCvWnd->GetSystemMenu(FALSE);
if(pSystemMenu!=NULL)
pSystemMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);
}
进行测试,没有达到预期目的。开始以为可能是方法不对,用其他几种方法试验,仍达不到预期效果。调试好久,偶然发现使用cvNamedWindow创建窗口时,其实创建了两个窗口,一个容器窗口和一个子窗口,创建时的窗口名称为子窗口的名称。因此将原先的代码修改如下后则可达到预期目的。
HWND hCvWnd=(HWND)cvGetWindowHandle(windowTitle);
CWnd* pCvWnd=CWnd::FromHandle(hCvWnd);
if(pCvWnd!=NULL)
{
CMenu* pSystemMenu=pCvWnd->GetParent()->GetSystemMenu(FALSE);
if(pSystemMenu!=NULL)
pSystemMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);
}
试之,然也,但是觉得如果每个窗口都写这么一段岂不是也挺费劲,干脆将其作为一个函数使用,反正参数只有一个即:windowtitle,改为一个全局函数(虽然不太好)
如下:
void CloseDisable(char *title)
{
HWND hCvWnd = (HWND)cvGetWindowHandle( title );
CWnd* pCvWnd = CWnd::FromHandle(hCvWnd);
if(pCvWnd != NULL)
{
CMenu* pSystemMenu = pCvWnd->GetParent()->GetSystemMenu(FALSE);
if(pSystemMenu != NULL)
pSystemMenu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);
}
}
这样如果不想让cvNamedWindow创建的窗口的关闭按钮可用,就调用一下该函数即可,参数很简单,就是窗口名字,试了一下,还是不错的!这样就不用担心误点了叉号关闭窗口后进程无法退出了,因为根本点不了了!哈哈
- 禁用cvNamedWindow所创建窗口的系统菜单关闭按钮
- 禁用CvNamedWindow中的关闭按钮
- 禁用窗口的关闭按钮方法
- C# 禁用 关闭窗口 按钮的方法
- C# 禁用 关闭窗口 按钮的方法
- cvNamedWindow函数 创建窗口
- OpenCV+中把cvNamedWindow(char*,int+flag)创建的窗口+同时显示QT性能+或+关闭掉Qt性能
- [WPF疑难]如何禁用窗口上的关闭按钮
- WPF中如何禁用/去除窗口右上角的关闭按钮
- WPF中如何禁用/去除窗口右上角的关闭按钮
- 禁用系统关闭按钮---X
- c# 禁用Excel窗口关闭按钮
- 对话框程序禁用系统的关闭按钮X
- 关于winForm窗体禁用关闭按钮的使用方法及禁用最大化、最小化窗口
- VC++无效化控制台窗口的关闭按钮(菜单)
- [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu)
- C#使用API禁用/删除程序窗体的关闭菜单和按钮
- C#使用API禁用/删除程序窗体的关闭菜单和按钮
- OC中静态构造和动态构造的区别
- 李彦宏在南开大学的演讲
- 学习也需要管理
- 利用DataTable一次性将数据插入到数据库中
- ubuntu终端常用命令
- 禁用cvNamedWindow所创建窗口的系统菜单关闭按钮
- HDU4633 Who's Aunt Zhang
- jsmart异常处理
- rails image_tag生成图片标签
- 了解运算器
- Twitter Bootstrap深受开发者喜爱的11大理由
- 学习的动力系统
- PAT_1039: Course List for Student
- ubuntu远程桌面