Beispiel #1
1
void CuDlgCacheTab::DisplayPage (CACHELINEINFO* pData)
{
	CString csButtonTitle;
	CWnd* pParent1 = GetParent ();              // View (CvDbmsCacheViewRight)
	ASSERT_VALID (pParent1);
	CWnd* pParent2 = pParent1->GetParent ();    // SplitterWnd
	ASSERT_VALID (pParent2);
	CWnd* pParent3 = pParent2->GetParent ();    // Frame (CfDbmsCacheFrame)
	ASSERT_VALID (pParent3);
	CWnd* pParent4 = pParent3->GetParent ();    // Modeless Dialog (CuDlgDbmsCache)
	ASSERT_VALID (pParent4);

	CWnd* pParent5 = pParent4->GetParent ();    // CTabCtrl
	ASSERT_VALID (pParent5);
	CWnd* pParent6 = pParent5->GetParent ();    // CConfRightDlg
	ASSERT_VALID (pParent6);

	CButton* pButton1 = (CButton*)((CConfRightDlg*)pParent6)->GetDlgItem (IDC_BUTTON1);
	CButton* pButton2 = (CButton*)((CConfRightDlg*)pParent6)->GetDlgItem (IDC_BUTTON2);

	CuCacheCheckListCtrl* pList = GetCacheListCtrl();
	CTabCtrl* pTab = (CTabCtrl*)GetDlgItem(IDC_TAB1);
	if (m_pCurrentPage)
	{
		//
		// Try to save (and validate) the data that has been changed
		// in the old page before displaying a new page.
		m_pCurrentPage->SendMessage(WMUSRMSG_CBF_PAGE_VALIDATE, (WPARAM)0, (LPARAM)0);
		m_pCurrentPage->ShowWindow (SW_HIDE);
		m_pCurrentPage = NULL;
	}
	if (!(pTab && IsWindow (pTab->m_hWnd)))
		return;

	UINT nState = 0;
	int i, nCurSel = -1, nCount = pList->GetItemCount();
	for (i=0; i<nCount; i++)
	{
		nState = pList->GetItemState (i, LVIS_SELECTED);
		if (nState & LVIS_SELECTED)
		{
			nCurSel = i;
			break;
		}
	}
	if (nCurSel == -1)
		return;
	if (!pData)
		return;
	try
	{
		if (!VCBFllInitCacheParms(pData))
			return;
		int nSel = pTab->GetCurSel();
		switch (nSel)
		{
		case 0:
			csButtonTitle.LoadString(IDS_BUTTON_EDIT_VALUE);
			pButton1->SetWindowText (csButtonTitle);

			csButtonTitle.LoadString(IDS_BUTTON_RESTORE);
			pButton2->SetWindowText (csButtonTitle);
			if (!m_pCacheParameter)
			{
				m_pCacheParameter = new CuDlgDbmsCacheParameter (pTab);
				m_pCacheParameter->Create (IDD_DBMS_PAGE_CACHE_PARAMETER, pTab);
			}
			m_pCurrentPage = m_pCacheParameter;
			break;
		case 1:
			csButtonTitle.LoadString(IDS_BUTTON_EDIT_VALUE);
			pButton1->SetWindowText (csButtonTitle);

			csButtonTitle.LoadString(IDS_BUTTON_RECALCULATE);
			pButton2->SetWindowText (csButtonTitle);

			if (!m_pCacheDerived)
			{
				m_pCacheDerived = new CuDlgDbmsCacheDerived (pTab);
				m_pCacheDerived->Create (IDD_DBMS_PAGE_CACHE_DERIVED, pTab);
			}
			m_pCurrentPage = m_pCacheDerived;
			break;
		default:
			break;
		}
		if (m_pCurrentPage) 
		{
			CRect r;
			pTab->GetClientRect (r);
			pTab->AdjustRect (FALSE, r);
			m_pCurrentPage->SendMessage (WMUSRMSG_CBF_PAGE_UPDATING, 0, 0);
			m_pCurrentPage->MoveWindow(r);
			m_pCurrentPage->ShowWindow(SW_SHOW);
		}
	}
	catch (CeVcbfException e)
	{
		//
		// Catch critical error 
		TRACE1 ("CuDlgCacheTab::DisplayPage has caught exception: %s\n", e.m_strReason);
		CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();
		pMain->CloseApplication (FALSE);
	}
	catch (CMemoryException* e)
	{
		VCBF_OutOfMemoryMessage ();
		e->Delete();
	}
	catch (...)
	{
		TRACE0 ("Other error occured ...\n");
	}
}
Beispiel #2
1
BOOL CMainTabDlg::OnInitDialog() 
{
	CRect   r;
	TC_ITEM item;
	CString strTab;
	UINT nTabID[3]= {IDS_TAB_MAIN_CONFIGURE,IDS_TAB_MAIN_HISTORY,IDS_TAB_MAIN_PREFERENCES};
	CDialog::OnInitDialog();
	memset (&item, 0, sizeof (item));
	item.mask       = TCIF_TEXT|TCIF_IMAGE;
	item.cchTextMax = 32;
	item.iImage     = -1;
	CTabCtrl * ptab = (CTabCtrl * )GetDlgItem(IDC_TAB1);
	ASSERT(ptab);

	ptab->GetWindowRect (r);
	ScreenToClient (r);
	m_dlgPadding.cx = r.left;
	m_dlgPadding.cy = r.top;

	CButton* pButton1= (CButton*)GetDlgItem(IDC_BUTTON1);
	ASSERT (pButton1);
	pButton1->GetWindowRect (r);
	ScreenToClient (r);
	m_buttonPadding.cx = r.right;
	m_buttonPadding.cy = r.bottom;
	int nTab = 2;
#if defined (OIDSK)
	nTab = 2;
#endif
	for (int i=0; i<nTab; i++)  {
		strTab.LoadString (nTabID [i]);
		item.pszText = (LPTSTR)(LPCTSTR)strTab;
		ptab->InsertItem (i, &item);
	}
	if (m_pCurDlg)
		m_pCurDlg->ShowWindow (SW_HIDE);
	CTabCtrl* pTab = (CTabCtrl*) GetDlgItem(IDC_TAB1);
	int nsel = pTab->GetCurSel();
	switch (nsel) 
	{
	case PANE_CONFIG:
		if (!m_pConfigDlg)
		{
			m_pConfigDlg = new CConfigDlg(pTab);
			m_pConfigDlg->Create(IDD_CONFIG,pTab);
		}
		m_pCurDlg= m_pConfigDlg;
		break;
	case PANE_HISTORY:
		if (!m_pHistDlg)
		{
			m_pHistDlg = new CHistDlg(pTab);
			m_pHistDlg->Create(IDD_HISTORY,pTab);
		}
		m_pCurDlg= m_pHistDlg;
		break;
	case PANE_PREFERENCES:
		if (!m_pPrefDlg)
		{
			m_pPrefDlg = new CPrefDlg(pTab);
			m_pPrefDlg->Create(IDD_PREFERENCES,pTab);
		}
		m_pCurDlg= m_pPrefDlg;
		break;
	} 

	if (m_pCurDlg) 
	{
		CRect r;
		pTab->GetClientRect (r);
		pTab->AdjustRect (FALSE, r);
		m_pCurDlg->MoveWindow(r);
		m_pCurDlg->ShowWindow(SW_SHOW);
	}
	SHOSTINFO CurInfo;
	
	VCBFGetHostInfos(&CurInfo);
	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_NAME_INSTALL);
	pStatic->SetWindowText((LPCTSTR)CurInfo.ii_installation_name);
	
	pStatic = (CStatic*)GetDlgItem(IDC_STATIC_INSTALL);
	pStatic->SetWindowText((LPCTSTR)CurInfo.ii_installation);
	
	
	pStatic = (CStatic*)GetDlgItem(IDC_STATIC_IISYSTEM_NAME);
	pStatic->SetWindowText((LPCTSTR)CurInfo.ii_system_name);
	
	pStatic = (CStatic*)GetDlgItem(IDC_STATIC_II_SYSTEM);
	pStatic->SetWindowText((LPCTSTR)CurInfo.ii_system);
	
	pStatic = (CStatic*)GetDlgItem(IDC_STATIC_HOST);
	pStatic->SetWindowText((LPCTSTR)CurInfo.host);


	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Beispiel #3
1
void CMainTabDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	CTabCtrl * pTab = (CTabCtrl *) GetDlgItem(IDC_TAB1);
	CRect rDlg;

	GetClientRect (rDlg);
	if (pTab && IsWindow(pTab->m_hWnd)) 
	{
		//
		// Move the buttons to the right place.
		CButton* pB1 = (CButton*) GetDlgItem(IDC_BUTTON2); // Close;
		CButton* pB2 = (CButton*) GetDlgItem(IDC_BUTTON1); // Help
		CButton* pB3 = (CButton*) GetDlgItem(IDC_BUTTON3);
		
		int   ibY = 0;
		CRect r, newRect;
		pB1->GetClientRect (r);
		newRect.top    = rDlg.bottom - 10 - r.Height();
		newRect.right  = rDlg.right  - m_dlgPadding.cx;
		newRect.left   = newRect.right - r.Width();
		newRect.bottom = newRect.top + r.Height();
		pB1->MoveWindow (newRect);

		newRect.right  = newRect.left - 10;
		newRect.left   = newRect.right - r.Width();
		pB2->MoveWindow (newRect);

		newRect.right  = newRect.left - 10;
		newRect.left   = newRect.right - r.Width();
		pB3->MoveWindow (newRect);
		ibY = newRect.top;

		//
		// Move the static Text Header II_SYSTEM 
		// to the right place.
		CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_II_SYSTEM);
		pStatic->GetWindowRect (r);
		ScreenToClient (r);
		r.right   = rDlg.right  - m_dlgPadding.cx;
		pStatic->MoveWindow (r);


		//
		// Move the Tab Control to the right place.
		pStatic->GetWindowRect (r);
		ScreenToClient (r);

		r.top     = r.bottom + 10;
		r.bottom  = ibY - 10;
		r.left    = m_dlgPadding.cx;
		r.right   = rDlg.right -  m_dlgPadding.cx;
		pTab->MoveWindow(r);
		if (m_pCurDlg) 
		{
			CRect r;
			pTab->GetClientRect (r);
			pTab->AdjustRect (FALSE, r);
			m_pCurDlg->MoveWindow(r);
		}
	}
}
Beispiel #4
0
void CMainTabDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	if (m_pCurDlg) 
	{
		//
		// Try to save (and validate) the data that has been changed
		// in the old page before displaying a new page.
		m_pCurDlg->SendMessage(WMUSRMSG_CBF_PAGE_VALIDATE, (WPARAM)0, (LPARAM)0);
		m_pCurDlg->ShowWindow(SW_HIDE);
		m_pCurDlg->SendMessage (WM_COMPONENT_EXIT, 0, 0);
		m_pCurDlg = NULL;
	}
	
	CTabCtrl* pTab = (CTabCtrl*) GetDlgItem(IDC_TAB1);
	int nsel = pTab->GetCurSel();
	
	switch (nsel) 
	{
	case  PANE_CONFIG:
		if (!m_pConfigDlg)
		{
			m_pConfigDlg = new CConfigDlg(pTab);
			m_pConfigDlg->Create(IDD_CONFIG,pTab);
		}
		m_pCurDlg= m_pConfigDlg;
		break;
	case PANE_HISTORY:
		if (!m_pHistDlg)
		{
			m_pHistDlg = new CHistDlg(pTab);
			m_pHistDlg->Create(IDD_HISTORY,pTab);
		}
		m_pCurDlg= m_pHistDlg;
		break;
	case PANE_PREFERENCES:
		if (!m_pPrefDlg)
		{
			m_pPrefDlg = new CPrefDlg(pTab);
			m_pPrefDlg->Create(IDD_PREFERENCES,pTab);
		}
		m_pCurDlg= m_pPrefDlg;
		break;
	} 
	
	if (m_pCurDlg) 
	{
		CRect r;
		pTab->GetClientRect (r);
		pTab->AdjustRect (FALSE, r);
		m_pCurDlg->MoveWindow(r);
		m_pCurDlg->ShowWindow(SW_SHOW);
		m_pCurDlg->SendMessage(WMUSRMSG_CBF_PAGE_UPDATING, 0, 0);
		m_pCurDlg->SendMessage(WM_COMPONENT_ENTER, 0, 0);
	}
}
Beispiel #5
0
void CuDlgCacheTab::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	CTabCtrl* pTab = (CTabCtrl*)GetDlgItem (IDC_TAB1);
	if (!(pTab && IsWindow (pTab->m_hWnd)))
		return;
	CRect rDlg, r;
	GetClientRect (rDlg);
	pTab->MoveWindow (rDlg);
	if (!m_pCurrentPage) 
		return;
	pTab->GetClientRect (r);
	pTab->AdjustRect (FALSE, r);
	m_pCurrentPage->MoveWindow(r);
	m_pCurrentPage->ShowWindow(SW_SHOW);
}
void CMyPropertySheet::OnSize(UINT nType, int cx, int cy)
{
	//TABLE内的窗口页在其WM_SIZE响应函数里调整大小即可
   CRect rcClient; 
   CPropertySheet::OnSize(nType, cx, cy);

   if(!m_bIsInited)return;
   CTabCtrl *pTab = GetTabControl();
   //ASSERT(NULL != pTab && IsWindow(pTab->m_hWnd));

   int dx = cx - m_rCrt.Width();
   int dy = cy - m_rCrt.Height();
   GetClientRect(&m_rCrt);

   HDWP hDWP = ::BeginDeferWindowPos(5);

   pTab->GetClientRect(&rcClient); 
   rcClient.right += dx; rcClient.bottom += dy;
   ::DeferWindowPos(hDWP, pTab->m_hWnd, NULL,
                    0, 0, rcClient.Width(), rcClient.Height(),
                    SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);

	for (CWnd *pChild = GetWindow(GW_CHILD);
	pChild != NULL;
	pChild = pChild->GetWindow(GW_HWNDNEXT))
	{
		if (pChild->SendMessage(WM_GETDLGCODE) & DLGC_BUTTON)
		{
			pChild->GetWindowRect(&rcClient); ScreenToClient(&rcClient); 
			rcClient.top += dy; rcClient.bottom += dy; rcClient.left+= dx; rcClient.right += dx;
			::DeferWindowPos(hDWP, pChild->m_hWnd, NULL,
				rcClient.left, rcClient.top, 0, 0,
				SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER);
		}
		else
		{
			pChild->GetClientRect(&rcClient); 
			rcClient.right += dx; rcClient.bottom += dy;
			::DeferWindowPos(hDWP, pChild->m_hWnd, NULL, 0, 0, 
				rcClient.Width(), rcClient.Height(),
				SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);
		}
	}
	::EndDeferWindowPos(hDWP);

	// TODO: 在此处添加消息处理程序代码
}
void CComPropertySheet::OnActivated(CPropertyPage* pPage)
{
	if(!pPage) return;

	CRect bounds(30000,30000,-30000,-30000);

	CRect wr, cr;
	GetWindowRect(wr);
	GetClientRect(cr);
	CSize ws = wr.Size(), cs = cr.Size();

	CRect twr, tcr;
	CTabCtrl* pTC = (CTabCtrl*)GetDlgItem(AFX_IDC_TAB_CONTROL);
	pTC->GetWindowRect(twr);
	pTC->GetClientRect(tcr);
	CSize tws = twr.Size(), tcs = tcr.Size();

	if(CWnd* pChild = pPage->GetWindow(GW_CHILD))
	{
		pChild->ModifyStyle(WS_CAPTION|WS_THICKFRAME, 0);
		pChild->ModifyStyleEx(WS_EX_DLGMODALFRAME, WS_EX_CONTROLPARENT);

		for(CWnd* pGrandChild = pChild->GetWindow(GW_CHILD); pGrandChild; pGrandChild = pGrandChild->GetNextWindow())
		{
			if(!(pGrandChild->GetStyle()&WS_VISIBLE)) continue;

			CRect r;
			pGrandChild->GetWindowRect(&r);
			pChild->ScreenToClient(r);
			bounds |= r;
		}
	}

	bounds |= CRect(0,0,0,0);
	bounds.SetRect(0, 0, bounds.right + max(bounds.left, 4), bounds.bottom + max(bounds.top, 4));

	CRect r = CRect(CPoint(0,0), bounds.Size());
	pTC->AdjustRect(TRUE, r);
	r.SetRect(twr.TopLeft(), twr.TopLeft() + r.Size());
	ScreenToClient(r);
	pTC->MoveWindow(r);
	pTC->ModifyStyle(TCS_MULTILINE, TCS_SINGLELINE);

	CSize diff = r.Size() - tws;

	if(!bounds.IsRectEmpty())
	{
		if(CWnd* pChild = pPage->GetWindow(GW_CHILD))
			pChild->MoveWindow(bounds);
		CRect r = twr;
		pTC->AdjustRect(FALSE, r);
		ScreenToClient(r);
		pPage->MoveWindow(CRect(r.TopLeft(), bounds.Size()));
	}

	int _afxPropSheetButtons[] = { IDOK, IDCANCEL, ID_APPLY_NOW, IDHELP };
	for(int i = 0; i < countof(_afxPropSheetButtons); i++)
	{
		if(CWnd* pWnd = GetDlgItem(_afxPropSheetButtons[i]))
		{
			pWnd->GetWindowRect(r);
			ScreenToClient(r);
			pWnd->MoveWindow(CRect(r.TopLeft() + diff, r.Size()));
		}
	}

	MoveWindow(CRect(wr.TopLeft(), ws + diff));

	Invalidate();
}