Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

156 lines
3.6 KiB

// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "occimpl.h"
#ifdef AFX_CORE3_SEG
#pragma code_seg(AFX_CORE3_SEG)
#endif
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define new DEBUG_NEW
CDialogBar::CDialogBar()
{
#ifndef _AFX_NO_OCC_SUPPORT
m_lpszTemplateName = NULL;
m_pOccDialogInfo = NULL;
#endif
}
CDialogBar::~CDialogBar()
{
DestroyWindow(); // avoid PostNcDestroy problems
}
BOOL CDialogBar::Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,
UINT nStyle, UINT nID)
{
ASSERT(pParentWnd != NULL);
ASSERT(lpszTemplateName != NULL);
#ifdef _DEBUG
// dialog template must exist and be invisible with WS_CHILD set
if (!_AfxCheckDialogTemplate(lpszTemplateName, TRUE))
{
ASSERT(FALSE); // invalid dialog template name
PostNcDestroy(); // cleanup if Create fails too soon
return FALSE;
}
#endif //_DEBUG
// allow chance to modify styles
m_dwStyle = nStyle;
CREATESTRUCT cs;
memset(&cs, 0, sizeof(cs));
cs.lpszClass = _afxWndControlBar;
cs.style = (DWORD)nStyle | WS_CHILD;
cs.hMenu = (HMENU)nID;
cs.hInstance = AfxGetInstanceHandle();
cs.hwndParent = pParentWnd->GetSafeHwnd();
if (!PreCreateWindow(cs))
return FALSE;
// create a modeless dialog
#ifndef _AFX_NO_OCC_SUPPORT
m_lpszTemplateName = lpszTemplateName;
#endif
// initialize common controls
VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTLS_REG));
BOOL bSuccess = CreateDlg(lpszTemplateName, pParentWnd);
#ifndef _AFX_NO_OCC_SUPPORT
m_lpszTemplateName = NULL;
#endif
if (!bSuccess)
return FALSE;
// dialog template MUST specify that the dialog
// is an invisible child window
SetDlgCtrlID(nID);
CRect rect;
GetWindowRect(&rect);
m_sizeDefault = rect.Size(); // set fixed size
// force WS_CLIPSIBLINGS
ModifyStyle(0, WS_CLIPSIBLINGS);
if (!ExecuteDlgInit(lpszTemplateName))
return FALSE;
// force the size to zero - resizing bar will occur later
SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOACTIVATE|SWP_SHOWWINDOW);
return TRUE;
}
CSize CDialogBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
{
if (bStretch) // if not docked stretch to fit
return CSize(bHorz ? 32767 : m_sizeDefault.cx,
bHorz ? m_sizeDefault.cy : 32767);
else
return m_sizeDefault;
}
void CDialogBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
{
UpdateDialogControls(pTarget, bDisableIfNoHndler);
}
#ifndef _AFX_NO_OCC_SUPPORT
BEGIN_MESSAGE_MAP(CDialogBar, CControlBar)
ON_MESSAGE(WM_INITDIALOG, HandleInitDialog)
END_MESSAGE_MAP()
LRESULT CDialogBar::HandleInitDialog(WPARAM, LPARAM)
{
Default(); // allow default to initialize first (common dialogs/etc)
// create OLE controls
COccManager* pOccManager = afxOccManager;
if ((pOccManager != NULL) && (m_pOccDialogInfo != NULL))
{
if (!pOccManager->CreateDlgControls(this, m_lpszTemplateName,
m_pOccDialogInfo))
{
TRACE0("Warning: CreateDlgControls failed during dialog bar init.\n");
return FALSE;
}
}
return TRUE;
}
BOOL CDialogBar::SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo)
{
m_pOccDialogInfo = pOccDialogInfo;
return TRUE;
}
#endif //!_AFX_NO_OCC_SUPPORT
#ifdef AFX_INIT_SEG
#pragma code_seg(AFX_INIT_SEG)
#endif
IMPLEMENT_DYNAMIC(CDialogBar, CControlBar)
///////////////////////////////////////////////////////////////////////////