我做了一个"不"支持DOC/VIEW的SDI应用,想屏蔽最大化按钮, 我采用了以下两种方法:
(1)在InitInstance()中,加入:
LONG lStyle;
lSytle = SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE) & ~WS_MAXIMIZEBOX;
::SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, lStyle);
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
(2)改写BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)如下:
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0); return TRUE;两种方法在支持DOC/VIEW的SDI中是可以达到屏蔽主窗口的最大化按钮的目的的, 但在不支持DOC/VIEW SDI中不起作用.希望大家来帮一下忙.
(1)在InitInstance()中,加入:
LONG lStyle;
lSytle = SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE) & ~WS_MAXIMIZEBOX;
::SetWindowLong(m_pMainWnd->m_hWnd, GWL_STYLE, lStyle);
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
(2)改写BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)如下:
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0); return TRUE;两种方法在支持DOC/VIEW的SDI中是可以达到屏蔽主窗口的最大化按钮的目的的, 但在不支持DOC/VIEW SDI中不起作用.希望大家来帮一下忙.
BOOL CxxFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~WS_MAXIMIZEBOX;
return CFrameWnd::PreCreateWindow(cs);
}或者试试:
CMenu *pmenu=AfxGetMainWnd()->GetSystemMenu(FALSE);
if(pmenu)
pmenu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);//禁止关闭按钮
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs // Create a child window without the maximize button
cs.style &= ~WS_MAXIMIZEBOX;
return TRUE;
}
{
if(nID==SC_MAXIMIZE)//最大化CWnd对象
{
.... //什么也不写
}
}