// Associat.cpp : implementation file // #include "stdafx.h" #include "netapp.h" #include "Associat.h" #include "Present.h" static UINT BITMAPLIST[] = { IDB_UNSELECTED, IDB_SELECTED, }; ///////////////////////////////////////////////////////////////////////////// // CNetAssociationDlg dialog CNetAssociationDlg::CNetAssociationDlg(CWnd* pParent /*=NULL*/) : CDialog(CNetAssociationDlg::IDD, pParent), m_Temp(TRUE) { //{{AFX_DATA_INIT(CNetAssociationDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CNetAssociationDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CNetAssociationDlg) DDX_Control(pDX, IDC_B_IMPLEMENT_CLASS, m_bImplementClass); DDX_Control(pDX, IDC_B_ASYNC_OPERATIONS, m_bAsyncOperations); DDX_Control(pDX, IDC_B_IMPLEMENT_VERSION, m_bImplementVersion); DDX_Control(pDX, IDC_B_MAX_LENGTH, m_bMaxLength); DDX_Control(pDX, IDC_ABSTRACT, m_Abstract); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CNetAssociationDlg, CDialog) //{{AFX_MSG_MAP(CNetAssociationDlg) ON_NOTIFY(TVN_SELCHANGED, IDC_ABSTRACT, OnSelchangedAbstract) ON_NOTIFY(NM_CLICK, IDC_ABSTRACT, OnClickAbstract) ON_BN_CLICKED(IDC_SELECT_ALL, OnSelectAll) ON_BN_CLICKED(IDC_DESELECT_ALL, OnDeselectAll) ON_NOTIFY(NM_DBLCLK, IDC_ABSTRACT, OnDblclkAbstract) ON_BN_CLICKED(IDC_MODIFY, OnModify) ON_BN_CLICKED(IDC_DEFAULT, OnDefault) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CNetAssociationDlg message handlers BOOL CNetAssociationDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon L_INT i; CBitmap Bitmap; m_Image.Create(12, 12, ILC_MASK, 0, sizeof(BITMAPLIST) / sizeof(BITMAPLIST[0])); for (i = 0; i < sizeof(BITMAPLIST) / sizeof(BITMAPLIST[0]); i++) { Bitmap.LoadBitmap(BITMAPLIST[i]); m_Image.Add(&Bitmap, (COLORREF)0xFFFFFF); Bitmap.DeleteObject(); } m_Abstract.SetImageList(&m_Image, TVSIL_NORMAL); m_bMouse = FALSE; Display(); SetDlgItemInt(IDC_TIMEOUT, m_nTimeout, FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CNetAssociationDlg::OnSelchangedAbstract(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; L_INT nImage1; L_INT nImage2; if (m_bMouse != FALSE) { m_Abstract.GetItemImage(pNMTreeView->itemOld.hItem, nImage1, nImage2); if (nImage1 == 0) { m_Abstract.SetItemImage(pNMTreeView->itemOld.hItem, 1, 1); } else { m_Abstract.SetItemImage(pNMTreeView->itemOld.hItem, 0, 0); } m_bMouse = FALSE; } *pResult = 0; } void CNetAssociationDlg::OnClickAbstract(NMHDR* pNMHDR, LRESULT* pResult) { HTREEITEM hItem; L_INT nImage1; L_INT nImage2; if (pNMHDR->idFrom == IDC_ABSTRACT) { hItem = m_Abstract.GetSelectedItem(); if (hItem != NULL) { m_Abstract.GetItemImage(hItem, nImage1, nImage2); if (nImage1 == 0) { m_Abstract.SetItemImage(hItem, 1, 1); } else { m_Abstract.SetItemImage(hItem, 0, 0); } m_bMouse = TRUE; } } *pResult = 0; } void CNetAssociationDlg::OnDblclkAbstract(NMHDR* pNMHDR, LRESULT* pResult) { HTREEITEM hItem; L_INT nImage1; L_INT nImage2; if (pNMHDR->idFrom == IDC_ABSTRACT) { hItem = m_Abstract.GetSelectedItem(); if (hItem != NULL) { m_Abstract.GetItemImage(hItem, nImage1, nImage2); if (nImage1 == 0) { m_Abstract.SetItemImage(hItem, 1, 1); } else { m_Abstract.SetItemImage(hItem, 0, 0); } } } *pResult = 0; } void CNetAssociationDlg::OnOK() { HTREEITEM hItem; L_INT i; L_INT nImage1, nImage2; L_UCHAR nID1, nID2; CString strText; m_pAssociate->SetVersion((L_UCHAR)GetDlgItemInt(IDC_VERSION, NULL, FALSE)); GetDlgItemText(IDC_APPLICATION, strText); m_pAssociate->SetApplication((L_CHAR *)(LPCTSTR)strText); while (m_pAssociate->GetPresentationCount() != 0) { m_pAssociate->DelPresentation(m_pAssociate->GetPresentation(0)); } hItem = m_Abstract.GetFirstVisibleItem(); if (hItem == NULL) { return; } while (m_Abstract.GetPrevSiblingItem(hItem) != NULL) { hItem = m_Abstract.GetPrevSiblingItem(hItem); } nID1 = 1; while (hItem != NULL) { m_Abstract.GetItemImage(hItem, nImage1, nImage2); if (nImage1 != 0) { nID2 = (L_UCHAR)m_Abstract.GetItemData(hItem); m_pAssociate->AddPresentation(nID1, 0, m_Temp.GetAbstract(nID2)); for (i = 0; i < m_Temp.GetTransferCount(nID2); i++) { m_pAssociate->AddTransfer(nID1, m_Temp.GetTransfer(nID2, i)); } m_pAssociate->SetRoleSelect(nID1, m_Temp.IsRoleSelect(nID2), m_Temp.GetUserRole(nID2), m_Temp.GetProviderRole(nID2)); m_pAssociate->SetExtended(nID1, m_Temp.GetExtended(nID2), m_Temp.GetLengthExtended(nID2)); nID1 += 2; } hItem = m_Abstract.GetNextSiblingItem(hItem); } m_pAssociate->SetMaxLength((m_bMaxLength.GetCheck() == 0) ? FALSE : TRUE, GetDlgItemInt(IDC_MAX_LENGTH, NULL, TRUE)); GetDlgItemText(IDC_IMPLEMENT_CLASS, strText); m_pAssociate->SetImplementClass((m_bImplementClass.GetCheck() == 0) ? FALSE : TRUE, (L_CHAR *)(LPCTSTR)strText); m_pAssociate->SetAsyncOperations((m_bAsyncOperations.GetCheck() == 0) ? FALSE : TRUE, GetDlgItemInt(IDC_INVOKED, NULL, TRUE), GetDlgItemInt(IDC_PERFORMED, NULL, TRUE)); GetDlgItemText(IDC_IMPLEMENT_VERSION, strText); m_pAssociate->SetImplementVersion((m_bImplementVersion.GetCheck() == 0) ? FALSE : TRUE, (L_CHAR *)(LPCTSTR)strText); m_nTimeout = GetDlgItemInt(IDC_TIMEOUT, NULL, FALSE); CDialog::OnOK(); } void CNetAssociationDlg::OnSelectAll() { HTREEITEM hItem; hItem = m_Abstract.GetFirstVisibleItem(); if (hItem == NULL) { return; } while (m_Abstract.GetPrevSiblingItem(hItem) != NULL) { hItem = m_Abstract.GetPrevSiblingItem(hItem); } while (hItem != NULL) { m_Abstract.SetItemImage(hItem, 1, 1); hItem = m_Abstract.GetNextSiblingItem(hItem); } } void CNetAssociationDlg::OnDeselectAll() { HTREEITEM hItem; hItem = m_Abstract.GetFirstVisibleItem(); if (hItem == NULL) { return; } while (m_Abstract.GetPrevSiblingItem(hItem) != NULL) { hItem = m_Abstract.GetPrevSiblingItem(hItem); } while (hItem != NULL) { m_Abstract.SetItemImage(hItem, 0, 0); hItem = m_Abstract.GetNextSiblingItem(hItem); } } void CNetAssociationDlg::OnModify() { CNetPresentationDlg dlg; HTREEITEM hItem; hItem = m_Abstract.GetSelectedItem(); if (hItem == NULL) { return; } dlg.m_pAssociate = &m_Temp; dlg.m_nID = (L_UCHAR)m_Abstract.GetItemData(hItem); dlg.DoModal(); } void CNetAssociationDlg::OnDefault() { LDicomUID::Default(); m_pAssociate->Default(); Display(); } void CNetAssociationDlg::Display() { L_INT i, j; L_UCHAR nID1, nID2; pDICOMUID pUID; CString strText; HTREEITEM hItem; m_Abstract.DeleteAllItems(); m_Temp.Reset(TRUE); nID1 = 1; pUID = LDicomUID::GetFirst(); while (pUID != NULL) { if ((pUID->nType == UID_TYPE_CLASS) || (pUID->nType == UID_TYPE_META_CLASS)) { hItem = m_Abstract.InsertItem(pUID->pszName, 0, 0, TVI_ROOT, TVI_LAST); m_Abstract.SetItemData(hItem, (DWORD)nID1); m_Temp.AddPresentation(nID1, 0, pUID->pszCode); nID1 += 2; } pUID = LDicomUID::GetNext(pUID); } for (i = 0; i < m_Temp.GetPresentationCount(); i++) { nID2 = m_Temp.GetPresentation(i); nID1 = m_pAssociate->FindAbstract(m_Temp.GetAbstract(nID2)); if (nID1 == 0) { pUID = LDicomUID::GetFirst(); while (pUID != NULL) { if (pUID->nType == UID_TYPE_TRANSFER1) { m_Temp.AddTransfer(nID2, pUID->pszCode); } pUID = LDicomUID::GetNext(pUID); } } else { for (j = 0; j < m_pAssociate->GetTransferCount(nID1); j++) { m_Temp.AddTransfer(nID2, m_pAssociate->GetTransfer(nID1, j)); } m_Temp.SetRoleSelect(nID2, m_pAssociate->IsRoleSelect(nID1), m_pAssociate->GetUserRole(nID1), m_pAssociate->GetProviderRole(nID1)); m_Temp.SetExtended(nID2, m_pAssociate->GetExtended(nID1), m_pAssociate->GetLengthExtended(nID1)); } } SetDlgItemInt(IDC_VERSION, m_pAssociate->GetVersion(), FALSE); SetDlgItemText(IDC_APPLICATION, m_pAssociate->GetApplication()); for (i = 0; i < m_pAssociate->GetPresentationCount(); i++) { nID1 = m_pAssociate->GetPresentation(i); hItem = m_Abstract.GetFirstVisibleItem(); if (hItem != NULL) { while (m_Abstract.GetPrevSiblingItem(hItem) != NULL) { hItem = m_Abstract.GetPrevSiblingItem(hItem); } while (hItem != NULL) { nID2 = (L_UCHAR)m_Abstract.GetItemData(hItem); if (strcmp(m_Temp.GetAbstract(nID2), m_pAssociate->GetAbstract(nID1)) == 0) { m_Abstract.SetItemImage(hItem, 1, 1); break; } hItem = m_Abstract.GetNextSiblingItem(hItem); } } } if (m_pAssociate->IsMaxLength()) { m_bMaxLength.SetCheck(1); SetDlgItemInt(IDC_MAX_LENGTH, m_pAssociate->GetMaxLength(), FALSE); } if (m_pAssociate->IsImplementClass()) { m_bImplementClass.SetCheck(1); SetDlgItemText(IDC_IMPLEMENT_CLASS, m_pAssociate->GetImplementClass()); } if (m_pAssociate->IsAsyncOperations()) { m_bAsyncOperations.SetCheck(1); SetDlgItemInt(IDC_INVOKED, m_pAssociate->GetInvokedOperations(), FALSE); SetDlgItemInt(IDC_PERFORMED, m_pAssociate->GetPerformedOperations(), FALSE); } if (m_pAssociate->IsImplementVersion()) { m_bImplementVersion.SetCheck(1); SetDlgItemText(IDC_IMPLEMENT_VERSION, m_pAssociate->GetImplementVersion()); } m_Abstract.RedrawWindow(); m_Abstract.SelectItem(m_Abstract.GetFirstVisibleItem()); }