怎样去掉窗口的关闭按钮(那个小叉)?

时间:2021-08-02 23:51:57
在VC中怎样去掉主窗口的3个按钮,并且窗口那个条中点右键时显示自己定义的内容?

20 个解决方案

#1


用VC的对话框属性设置,不选中System Menu就可以了。。。。

点击键显示自己定义的内容,需要新建一条菜单,然后重载WM_OnContextMenu();把CPoint point设置在窗口条的范围内就可以了

#2


你搜索一下,这个问题好多人问过了,回答得很好的。我一时找不到。

#3


我刚答过

http://expert.csdn.net/Expert/topic/1236/1236784.xml?temp=.4685175

#4


up

#5


CMainFrame::OnCreate中

CMenu* pTopMenu = GetSystemMenu(FALSE);

pTopMenu -> RemoveMenu(3,MF_BYPOSITION); //

#6


怎么我刚试了,不行阿,还是有个小叉

#7


去掉WS_SYSMENU几格!

#8


去掉WS_SYSMENU风格!

#9


去掉WS_SYSMENU风格后可以了,但是我在点双击窗口条时,窗口还是会改变大小,我怎么能使双击窗口条没响应呢?

#10


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~WS_SYSMENU;

return TRUE;
}

#11


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style &=~WS_SYSMENU;

return TRUE;
}

#12


up

#13


同意中国男人
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~WS_SYSMENU;

return TRUE;
}

#14


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~WS_SYSMENU;

return TRUE;
}

#15


再去掉WS_MAXIMIZEBOX和WS_THICKFRAME风格

#16


要双击没反应??那就要响应WM_NCLBUTTONDBLCLK消息

Ctrl+W打开ClassWizard,点ClassInfo->Message filter中的Windows,

然后在MessageMaps里选择CMainframe,这样就可以选WM_NCLBUTTONDBLCLK消息了

在WM_NCLBUTTONDBLCLK消息响应函数中去掉所有代码,直接加上return;

OK 了

#17


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~(WS_MAXIMIZEBOX|WS_MAXIMIZEBOX)   ;

return TRUE;
}

#18


各位高手回答得真精彩,等下一定给分
还有个问题:
显示位图得时候,怎样把一张图显示在整个Cview窗口所在得区域?

#19


BITBlT函数!或者用StretchBlt具体看MSDN

#20


可用PatBlt,或者用一个循环来BitBlt

#1


用VC的对话框属性设置,不选中System Menu就可以了。。。。

点击键显示自己定义的内容,需要新建一条菜单,然后重载WM_OnContextMenu();把CPoint point设置在窗口条的范围内就可以了

#2


你搜索一下,这个问题好多人问过了,回答得很好的。我一时找不到。

#3


我刚答过

http://expert.csdn.net/Expert/topic/1236/1236784.xml?temp=.4685175

#4


up

#5


CMainFrame::OnCreate中

CMenu* pTopMenu = GetSystemMenu(FALSE);

pTopMenu -> RemoveMenu(3,MF_BYPOSITION); //

#6


怎么我刚试了,不行阿,还是有个小叉

#7


去掉WS_SYSMENU几格!

#8


去掉WS_SYSMENU风格!

#9


去掉WS_SYSMENU风格后可以了,但是我在点双击窗口条时,窗口还是会改变大小,我怎么能使双击窗口条没响应呢?

#10


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~WS_SYSMENU;

return TRUE;
}

#11


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style &=~WS_SYSMENU;

return TRUE;
}

#12


up

#13


同意中国男人
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~WS_SYSMENU;

return TRUE;
}

#14


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~WS_SYSMENU;

return TRUE;
}

#15


再去掉WS_MAXIMIZEBOX和WS_THICKFRAME风格

#16


要双击没反应??那就要响应WM_NCLBUTTONDBLCLK消息

Ctrl+W打开ClassWizard,点ClassInfo->Message filter中的Windows,

然后在MessageMaps里选择CMainframe,这样就可以选WM_NCLBUTTONDBLCLK消息了

在WM_NCLBUTTONDBLCLK消息响应函数中去掉所有代码,直接加上return;

OK 了

#17


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
         cs.style =~(WS_MAXIMIZEBOX|WS_MAXIMIZEBOX)   ;

return TRUE;
}

#18


各位高手回答得真精彩,等下一定给分
还有个问题:
显示位图得时候,怎样把一张图显示在整个Cview窗口所在得区域?

#19


BITBlT函数!或者用StretchBlt具体看MSDN

#20


可用PatBlt,或者用一个循环来BitBlt