// ConView.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "MSVC5conview.h" #include "MainFrm.h" #include "MSVC5ConViewDoc.h" #include "MSVC5ConViewView.h" #include "leadwindowlevelaction.h" #include "leadrastercontainercell.h" #include "leadmagnifyglassaction.h" #include "leadwindowlevelaction.h" #include "leadmagnifyglassaction.h" #include "leadscaleaction.h" #include "leadoffsetaction.h" #include "leadstackaction.h" #include "leadalphaaction.h" #include "ActionPropDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CConViewApp BEGIN_MESSAGE_MAP(CConViewApp, CWinApp) //{{AFX_MSG_MAP(CConViewApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CConViewApp construction CConViewApp::CConViewApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance m_pRasterIO = NULL; m_pRasterDlgKrn = NULL; m_pRasterDlgFile = NULL; m_pRasterFileDlgSink = NULL; } ///////////////////////////////////////////////////////////////////////////// // The one and only CConViewApp object CConViewApp theApp; ///////////////////////////////////////////////////////////////////////////// // CConViewApp initialization BOOL CConViewApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif CoInitialize(NULL); HRESULT hr = CoCreateInstance(CLSID_LEADRaster, NULL, CLSCTX_ALL, IID_ILEADRaster, (void**)&m_pRaster); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Raster IO Object...")); return FALSE; } UNLOCKSUPPORT(*m_pRaster); if(m_pRaster->IsSupportLocked(L_SUPPORT_MEDICAL_NET)) { AfxMessageBox(TEXT("The Medical Net support should be unlocked for this demo.")); return FALSE; } // Change the registry key under which our settings are stored. // TODO: You should modify this string to be something appropriate // such as the name of your company or organization. SetRegistryKey(TEXT("Local AppWizard-Generated Applications")); LoadStdProfileSettings(); // Load standard INI file options (including MRU) // Register the application's document templates. Document templates // serve as the connection between documents, frame windows and views. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CConViewDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CConViewView)); AddDocTemplate(pDocTemplate); // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; POSITION m_Pos = pDocTemplate->GetFirstDocPosition(); CConViewDoc* pDoc = (CConViewDoc*)pDocTemplate->GetNextDoc(m_Pos); CConViewView * pView = (CConViewView*)pDoc->GetView(); //create a temp LEADRaster object and use it //to unlock support for the Inet object hr = S_OK; IClassFactory2 *pCF2=NULL; CLSID clsid; #ifndef _UNICODE static const WCHAR BASED_CODE _szID[] = L"LEADRaster.LEADRaster"; #else static const WCHAR BASED_CODE _szID[] = L"LEADRaster_U.LEADRaster_U"; #endif CLSIDFromProgID(_szID, &clsid); hr = CoCreateInstance(CLSID_LEADRasterIO, NULL, CLSCTX_ALL, IID_ILEADRasterIO, (void**)&m_pRasterIO); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Raster IO Object...")) ; return FALSE; } hr = CoCreateInstance(CLSID_LEADRasterDlgKrn, NULL, CLSCTX_ALL, IID_ILEADRasterDlgKrn, (void**)&m_pRasterDlgKrn); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Raster Kernel Dialog Object...")); return FALSE; } hr = CoCreateInstance(CLSID_LEADRasterDlgFile, NULL, CLSCTX_ALL, IID_ILEADRasterDlgFile, (void**)&m_pRasterDlgFile); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Raster File Dialog Object...")); return FALSE; } //Establish a connection between source and sink. m_pRasterFileDlgSink = new CRasterFileDialogSink; LPUNKNOWN pUnkSink = m_pRasterFileDlgSink->GetIDispatch(FALSE); AfxConnectionAdvise(m_pRasterDlgFile, DIID__ILEADRasterDlgFileEvents, pUnkSink, FALSE, &m_dwCookie); hr = CoCreateInstance( CLSID_LEADRasterDlgClr, NULL, CLSCTX_ALL, IID_ILEADRasterDlgClr, (void**)&m_pRasterDlgClr ); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Raster color Dialog Object...")); return FALSE; } m_pRasterDlgKrn->InitDlg(INIT_WITH_COLOR); m_pRasterIO->PutEnableMethodErrors(FALSE); m_pRasterDlgKrn->PutEnableMethodErrors(FALSE); m_pRasterDlgFile->PutEnableMethodErrors(FALSE); m_pRaster->PutEnableMethodErrors(FALSE); ILEADContainerViewerProperties * pConViewerProps ; pConViewerProps =NULL; hr = CoCreateInstance( CLSID_LEADContainerViewerProperties, NULL, CLSCTX_ALL, IID_ILEADContainerViewerProperties, (void**)&pConViewerProps ); if (FAILED(hr)) { AfxMessageBox(_TEXT("Can't instantiate the Container Viewer Properties Object...")); return FALSE; } pConViewerProps->PutRowCount(1); pConViewerProps->PutColumnCount(2); pConViewerProps->PutIncludedParameters(CONVIEW_CIP_ROWCOUNT | CONVIEW_CIP_COLUMNCOUNT); pView->m_ConView.SetContainerProperties(pConViewerProps, 0); pView->m_Index = -1; if (MessageBox(this->GetMainWnd()->m_hWnd, TEXT("\"LEADTOOLS Viewer Container Demo\" can load sample DICOM images to demonstrate the capabilities of the \"LEAD Raster Image Container Control (14.0)\" \n Would you like to load these images now?"), TEXT("Initiallization"), MB_YESNO) == IDYES) { TCHAR szText[MAX_PATH]; UINT uIndex = -1; wsprintf(szText, TEXT("../../../Images/XA.dcm")); if(pView->CreateNewCell(szText, &uIndex) != TRUE) { wsprintf(szText, TEXT("../Images/XA.dcm")); pView->CreateNewCell(szText, &uIndex); } if(uIndex != -1) { pView->m_ConView.Cell(uIndex).SetIsFit(TRUE); pView->m_ConView.Cell(uIndex).AddTag( 2, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("EX. ID 230-36-5448"), 0); pView->m_ConView.Cell(uIndex).AddTag( 4, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_FRAME, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 6, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_SCALE, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 2, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_WLCENTERWIDTH, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 1, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_FIELDOFVIEW, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 1, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("Good, Guy"), 0); pView->m_ConView.Cell(uIndex).AddTag( 2, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("PID 125-98-445"), 0); pView->m_ConView.Cell(uIndex).AddTag( 3, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("DOB 08/02/1929"), 0); pView->m_ConView.Cell(uIndex).AddTag( 5, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("03/16/1999"), 0); } wsprintf(szText, TEXT("../../../Images/MR.dcm")); if(pView->CreateNewCell(szText, &uIndex) != TRUE) { wsprintf(szText, TEXT("../Images/MR.dcm")); pView->CreateNewCell(szText, &uIndex); } if(uIndex != -1) { pView->m_ConView.Cell(uIndex).SetIsFit(TRUE); pView->m_ConView.Cell(uIndex).AddTag( 1, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("MRI"), 0); pView->m_ConView.Cell(uIndex).AddTag( 2, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("EX. ID G-1194-24"), 0); pView->m_ConView.Cell(uIndex).AddTag( 4, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_FRAME, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 6, CONVIEW_CELLALIGN_TOPLEFT, CONVIEW_CELLTAG_SCALE, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 2, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_WLCENTERWIDTH, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 1, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_FIELDOFVIEW, NULL,0); pView->m_ConView.Cell(uIndex).AddTag( 0, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("THK 10 mm"), 0); pView->m_ConView.Cell(uIndex).AddTag( 3, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("TR 1333.33"), 0); pView->m_ConView.Cell(uIndex).AddTag( 4, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("TE 11.98"), 0); pView->m_ConView.Cell(uIndex).AddTag( 6, CONVIEW_CELLALIGN_BOTTOMLEFT, CONVIEW_CELLTAG_USERDATA, TEXT("Comm longaxis - Normal"), 0); pView->m_ConView.Cell(uIndex).AddTag( 0, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("Community Hospital"), 0); pView->m_ConView.Cell(uIndex).AddTag( 1, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("Nice, Fellow"), 0); pView->m_ConView.Cell(uIndex).AddTag( 2, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("PID 123-45-6789"), 0); pView->m_ConView.Cell(uIndex).AddTag( 3, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("DOB 05/13/1936"), 0); pView->m_ConView.Cell(uIndex).AddTag( 4, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("Sex M"), 0); pView->m_ConView.Cell(uIndex).AddTag( 5, CONVIEW_CELLALIGN_TOPRIGHT, CONVIEW_CELLTAG_USERDATA, TEXT("06/26/1995"), 0); pView->m_ConView.Cell(uIndex).SetSubColumnCount(2); pView->m_ConView.Cell(uIndex).SetSubRowCount(2); } } pView->m_ConView.WindowLevelAction().ActivateAction(TRUE, 0); pView->m_ConView.WindowLevelAction().SetMouseButtonAction(CONVIEW_MOUSE_BUTTON_LEFT, CONVIEW_ACTION_ACTIVEONLY|CONVIEW_ACTION_REALTIME); pView->m_ConView.WindowLevelAction().SetModifier(CONVIEW_KEY_CTRL); pView->m_ConView.WindowLevelAction().SetKey(VK_DOWN); pView->m_ConView.WindowLevelAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_DOWN); pView->m_ConView.WindowLevelAction().SetKey(VK_UP); pView->m_ConView.WindowLevelAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_UP); pView->m_ConView.WindowLevelAction().SetKey(VK_LEFT); pView->m_ConView.WindowLevelAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_LEFT); pView->m_ConView.WindowLevelAction().SetKey(VK_RIGHT); pView->m_ConView.WindowLevelAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_RIGHT); pView->m_ConView.OffsetAction().ActivateAction(TRUE, 0); pView->m_ConView.OffsetAction().SetMouseButtonAction(CONVIEW_MOUSE_BUTTON_RIGHT, CONVIEW_ACTION_ACTIVEONLY|CONVIEW_ACTION_REALTIME); pView->m_ConView.OffsetAction().SetModifier(0); pView->m_ConView.OffsetAction().SetKey(VK_DOWN); pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_DOWN); pView->m_ConView.OffsetAction().SetKey(VK_UP); pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_UP); pView->m_ConView.OffsetAction().SetKey(VK_LEFT); pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_LEFT); pView->m_ConView.OffsetAction().SetKey(VK_RIGHT); pView->m_ConView.OffsetAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_RIGHT); pView->m_ConView.ScaleAction().ActivateAction(TRUE, 0); pView->m_ConView.ScaleAction().SetMouseButtonAction(CONVIEW_MOUSE_BUTTON_MIDDLE, CONVIEW_ACTION_ACTIVEONLY|CONVIEW_ACTION_REALTIME); pView->m_ConView.ScaleAction().SetModifier(0); pView->m_ConView.ScaleAction().SetKey(VK_SUBTRACT); pView->m_ConView.ScaleAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_UP); pView->m_ConView.ScaleAction().SetKey(VK_ADD); pView->m_ConView.ScaleAction().SetKeyboardAction(CONVIEW_MOUSEMOVE_DOWN); pView->m_ConView.StackAction().ActivateAction(TRUE, 0); pView->m_ConView.StackAction().SetMouseButtonAction(CONVIEW_MOUSE_WHEEL, CONVIEW_ACTION_ACTIVEONLY|CONVIEW_ACTION_REALTIME); pView->m_ConView.AlphaAction().ActivateAction(TRUE, 0); pView->m_ConView.MagnifyGlassAction().ActivateAction(TRUE, 0); pView->m_CurrentActionButton[WINDOWLEVEL_ACTION] = CONVIEW_MOUSE_BUTTON_LEFT; pView->m_CurrentActionButton[OFFSET_ACTION] = CONVIEW_MOUSE_BUTTON_RIGHT; pView->m_CurrentActionButton[SCALE_ACTION] = CONVIEW_MOUSE_BUTTON_MIDDLE; pView->m_CurrentActionButton[STACK_ACTION] = CONVIEW_MOUSE_WHEEL; // The one and only window has been initialized, so show and update it. m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() // App command to run the dialog void CConViewApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } ///////////////////////////////////////////////////////////////////////////// // CConViewApp message handlers INT CConViewApp::SearchForFirstSelectedCell() { POSITION m_Pos = this->GetFirstDocTemplatePosition(); CDocTemplate* pDocTemplate = (CDocTemplate* )this->GetNextDocTemplate(m_Pos); m_Pos = pDocTemplate->GetFirstDocPosition(); CConViewDoc* pDoc = (CConViewDoc*)pDocTemplate->GetNextDoc(m_Pos); CConViewView * pView = (CConViewView*)pDoc->GetView(); INT nCount = pView->m_ConView.GetCellCount(); INT nI; for (nI = 0; nI < nCount; nI++) { if (pView->m_ConView.Cell(nI).GetSelect()) break; } if (nI == nCount) nI = -1; return nI; } VOID CConViewApp::AddSupString(CComboBox * pComboBox) { pComboBox->AddString(TEXT("N/A")); pComboBox->AddString(TEXT("Shift")); pComboBox->AddString(TEXT("Ctrl")); pComboBox->AddString(TEXT("Alt")); pComboBox->SetCurSel(0); } VOID CConViewApp::AddVirtualKeyString(CComboBox * pComboBox) { INT nIndex = -1 ; nIndex = pComboBox->AddString(TEXT("N/A")); pComboBox->SetItemData (nIndex, 0x0); nIndex = pComboBox->AddString(TEXT("Space")); pComboBox->SetItemData (nIndex, 0x20); nIndex = pComboBox->AddString(TEXT("Page Up")); pComboBox->SetItemData (nIndex, 0x21); nIndex = pComboBox->AddString(TEXT("Page Down")); pComboBox->SetItemData (nIndex, 0x22); nIndex = pComboBox->AddString(TEXT("End")); pComboBox->SetItemData (nIndex, 0x23); nIndex = pComboBox->AddString(TEXT("Home")); pComboBox->SetItemData (nIndex, 0x24); nIndex = pComboBox->AddString(TEXT("Left")); pComboBox->SetItemData (nIndex, 0x25); nIndex = pComboBox->AddString(TEXT("Up")); pComboBox->SetItemData (nIndex, 0x26); nIndex = pComboBox->AddString(TEXT("Right")); pComboBox->SetItemData (nIndex, 0x27); nIndex = pComboBox->AddString(TEXT("Down")); pComboBox->SetItemData (nIndex, 0x28); nIndex = pComboBox->AddString(TEXT("Print Screen")); pComboBox->SetItemData (nIndex, 0x2C); nIndex = pComboBox->AddString(TEXT("Insert")); pComboBox->SetItemData (nIndex, 0x2D); nIndex = pComboBox->AddString(TEXT("Delete")); pComboBox->SetItemData (nIndex, 0x2E); nIndex = pComboBox->AddString(TEXT("0")); pComboBox->SetItemData (nIndex, 0x30); nIndex = pComboBox->AddString(TEXT("1")); pComboBox->SetItemData (nIndex, 0x31); nIndex = pComboBox->AddString(TEXT("2")); pComboBox->SetItemData (nIndex, 0x32); nIndex = pComboBox->AddString(TEXT("3")); pComboBox->SetItemData (nIndex, 0x33); nIndex = pComboBox->AddString(TEXT("4")); pComboBox->SetItemData (nIndex, 0x34); nIndex = pComboBox->AddString(TEXT("5")); pComboBox->SetItemData (nIndex, 0x35); nIndex = pComboBox->AddString(TEXT("6")); pComboBox->SetItemData (nIndex, 0x36); nIndex = pComboBox->AddString(TEXT("7")); pComboBox->SetItemData (nIndex, 0x37); nIndex = pComboBox->AddString(TEXT("8")); pComboBox->SetItemData (nIndex, 0x38); nIndex = pComboBox->AddString(TEXT("9")); pComboBox->SetItemData (nIndex, 0x39); nIndex = pComboBox->AddString(TEXT("A")); pComboBox->SetItemData (nIndex, 0x41); nIndex = pComboBox->AddString(TEXT("B")); pComboBox->SetItemData (nIndex, 0x42); nIndex = pComboBox->AddString(TEXT("C")); pComboBox->SetItemData (nIndex, 0x43); nIndex = pComboBox->AddString(TEXT("D")); pComboBox->SetItemData (nIndex, 0x44); nIndex = pComboBox->AddString(TEXT("E")); pComboBox->SetItemData (nIndex, 0x45); nIndex = pComboBox->AddString(TEXT("F")); pComboBox->SetItemData (nIndex, 0x46); nIndex = pComboBox->AddString(TEXT("G")); pComboBox->SetItemData (nIndex, 0x47); nIndex = pComboBox->AddString(TEXT("H")); pComboBox->SetItemData (nIndex, 0x48); nIndex = pComboBox->AddString(TEXT("I")); pComboBox->SetItemData (nIndex, 0x49); nIndex = pComboBox->AddString(TEXT("J")); pComboBox->SetItemData (nIndex, 0x4A); nIndex = pComboBox->AddString(TEXT("K")); pComboBox->SetItemData (nIndex, 0x4B); nIndex = pComboBox->AddString(TEXT("L")); pComboBox->SetItemData (nIndex, 0x4C); nIndex = pComboBox->AddString(TEXT("M")); pComboBox->SetItemData (nIndex, 0x4D); nIndex = pComboBox->AddString(TEXT("N")); pComboBox->SetItemData (nIndex, 0x4E); nIndex = pComboBox->AddString(TEXT("O")); pComboBox->SetItemData (nIndex, 0x4F); nIndex = pComboBox->AddString(TEXT("P")); pComboBox->SetItemData (nIndex, 0x50); nIndex = pComboBox->AddString(TEXT("Q")); pComboBox->SetItemData (nIndex, 0x51); nIndex = pComboBox->AddString(TEXT("R")); pComboBox->SetItemData (nIndex, 0x52); nIndex = pComboBox->AddString(TEXT("S")); pComboBox->SetItemData (nIndex, 0x53); nIndex = pComboBox->AddString(TEXT("T")); pComboBox->SetItemData (nIndex, 0x54); nIndex = pComboBox->AddString(TEXT("U")); pComboBox->SetItemData (nIndex, 0x55); nIndex = pComboBox->AddString(TEXT("V")); pComboBox->SetItemData (nIndex, 0x56); nIndex = pComboBox->AddString(TEXT("W")); pComboBox->SetItemData (nIndex, 0x57); nIndex = pComboBox->AddString(TEXT("X")); pComboBox->SetItemData (nIndex, 0x58); nIndex = pComboBox->AddString(TEXT("Y")); pComboBox->SetItemData (nIndex, 0x59); nIndex = pComboBox->AddString(TEXT("Z")); pComboBox->SetItemData (nIndex, 0x5A); nIndex = pComboBox->AddString(TEXT("Num 0")); pComboBox->SetItemData (nIndex, 0x60); nIndex = pComboBox->AddString(TEXT("Num 1")); pComboBox->SetItemData (nIndex, 0x61); nIndex = pComboBox->AddString(TEXT("Num 2")); pComboBox->SetItemData (nIndex, 0x62); nIndex = pComboBox->AddString(TEXT("Num 3")); pComboBox->SetItemData (nIndex, 0x63); nIndex = pComboBox->AddString(TEXT("Num 4")); pComboBox->SetItemData (nIndex, 0x64); nIndex = pComboBox->AddString(TEXT("Num 5")); pComboBox->SetItemData (nIndex, 0x65); nIndex = pComboBox->AddString(TEXT("Num 6")); pComboBox->SetItemData (nIndex, 0x66); nIndex = pComboBox->AddString(TEXT("Num 7")); pComboBox->SetItemData (nIndex, 0x67); nIndex = pComboBox->AddString(TEXT("Num 8")); pComboBox->SetItemData (nIndex, 0x68); nIndex = pComboBox->AddString(TEXT("Num 9")); pComboBox->SetItemData (nIndex, 0x69); nIndex = pComboBox->AddString(TEXT("Multiply")); pComboBox->SetItemData (nIndex, 0x6A); nIndex = pComboBox->AddString(TEXT("Add")); pComboBox->SetItemData (nIndex, 0x6B); nIndex = pComboBox->AddString(TEXT("Subtract")); pComboBox->SetItemData (nIndex, 0x6D); nIndex = pComboBox->AddString(TEXT("Decimal")); pComboBox->SetItemData (nIndex, 0x6E); nIndex = pComboBox->AddString(TEXT("F1")); pComboBox->SetItemData (nIndex, 0x70); nIndex = pComboBox->AddString(TEXT("F2")); pComboBox->SetItemData (nIndex, 0x71); nIndex = pComboBox->AddString(TEXT("F3")); pComboBox->SetItemData (nIndex, 0x72); nIndex = pComboBox->AddString(TEXT("F4")); pComboBox->SetItemData (nIndex, 0x73); nIndex = pComboBox->AddString(TEXT("F5")); pComboBox->SetItemData (nIndex, 0x74); nIndex = pComboBox->AddString(TEXT("F6")); pComboBox->SetItemData (nIndex, 0x75); nIndex = pComboBox->AddString(TEXT("F7")); pComboBox->SetItemData (nIndex, 0x76); nIndex = pComboBox->AddString(TEXT("F8")); pComboBox->SetItemData (nIndex, 0x77); nIndex = pComboBox->AddString(TEXT("F9")); pComboBox->SetItemData (nIndex, 0x78); nIndex = pComboBox->AddString(TEXT("F10")); pComboBox->SetItemData (nIndex, 0x79); nIndex = pComboBox->AddString(TEXT("F11")); pComboBox->SetItemData (nIndex, 0x7A); nIndex = pComboBox->AddString(TEXT("F12")); pComboBox->SetItemData (nIndex, 0x7B); nIndex = pComboBox->AddString(TEXT("Num Lock")); pComboBox->SetItemData (nIndex, 0x90); nIndex = pComboBox->AddString(TEXT("Scroll Lock")); pComboBox->SetItemData (nIndex, 0x91); pComboBox->SetCurSel(0); } VOID CConViewApp::GetKeyboardInfo(CComboBox * pComboBox, CComboBox * pModComboBox, INT uVk, INT uModifier) { for(int i=0;i< pComboBox->GetCount(); ++i) { if(pComboBox->GetItemData(i) == (UINT)uVk) { pComboBox->SetCurSel(i); break; } } pModComboBox->SetCurSel(min(3, uModifier)); } HICON CConViewApp::IPictureDispTohIcon(IPictureDisp * pVal) { CPictureHolder PicHolder; PicHolder.SetPictureDispatch(pVal); IPicture *IPic; PicHolder.m_pPict->QueryInterface(IID_IPicture, (void**)&IPic); short nType; IPic->get_Type(&nType); if(nType == PICTYPE_ICON) { OLE_HANDLE Icon=NULL; IPic->get_Handle(&Icon); return (HICON)Icon; } else return NULL; } INT CConViewApp::GetVirtualKey(CComboBox * pComboBox) { return pComboBox->GetItemData(pComboBox->GetCurSel()); } IPictureDisp * CConViewApp::hIconToIPictureDisp(HICON hIcon) { IPictureDisp * Temp; CPictureHolder PicHolder; if(PicHolder.CreateFromIcon(hIcon)) { Temp = PicHolder.GetPictureDispatch(); return Temp; } else return NULL; } int CConViewApp::GetIconFileName(TCHAR * m_FileName, HWND hWnd) { INT nRet; OPENFILENAME OpenFileName; memset(&OpenFileName, 0, sizeof(OPENFILENAME)); memset(m_FileName, 0, MAX_PATH * sizeof(TCHAR)); OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.lpstrFilter = TEXT("Cursors(*.cur)\0 *.cur"); OpenFileName.nMaxCustFilter = 12; OpenFileName.hwndOwner = hWnd; OpenFileName.lpstrTitle = TEXT("Open a File"); OpenFileName.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; OpenFileName.lpstrFile = m_FileName; OpenFileName.nMaxFile = MAX_PATH; nRet = GetOpenFileName(&OpenFileName); return nRet; } COLORREF CConViewApp::ShowColorDlg (COLORREF crInitial, HWND hWnd) { INT nRet = 0; CConViewApp * pTheApp = (CConViewApp *)AfxGetApp(); pTheApp->m_pRasterDlgClr->UIFlags = COLOR_SHOW_OLDCOLOR | COLOR_SHOW_NEWCOLOR | COLOR_SHOW_NAME | COLOR_COLORSPACE_SHOW_HUE | COLOR_COLORSPACE_SHOW_BRIGHTNESS | COLOR_COLORSPACE_SHOW_WHEEL | COLOR_COLORSPACE_SHOW_RGB | COLOR_COLORSPACE_SHOW_CMY | COLOR_COLORSPACE_SHOW_CMYK | COLOR_COLORSPACE_SHOW_LAB | COLOR_COLORMODEL_SHOW_RGB | COLOR_COLORMODEL_SHOW_HSB | COLOR_COLORMODEL_SHOW_HLS | COLOR_COLORMODEL_SHOW_CMY | COLOR_COLORMODEL_SHOW_CMYK | COLOR_COLORMODEL_SHOW_LAB ; pTheApp->m_pRasterDlgClr->PutSelectedColor(crInitial); nRet = pTheApp->m_pRasterDlgClr->ShowColorDlg((long)hWnd) ; if(nRet == 0 && pTheApp->m_pRasterDlgClr->DialogStatus == DLG_OK) { crInitial = pTheApp->m_pRasterDlgClr->SelectedColor; } return crInitial; } void CConViewApp::RepaintButton(CWnd * ButtonWnd, INT id ,COLORREF ColorRef) { HBRUSH hNewBrush,hOldBrush; CDC *pcdc; RECT rect; PAINTSTRUCT ps; pcdc = ButtonWnd->GetDlgItem(id)->BeginPaint(&ps); ButtonWnd->GetDlgItem(id)->GetClientRect(&rect); hNewBrush = CreateSolidBrush (ColorRef); hOldBrush = (HBRUSH) SelectObject (pcdc->GetSafeHdc(), hNewBrush); Rectangle (pcdc->GetSafeHdc(), rect.left, rect.top, rect.right, rect.bottom); SelectObject(pcdc->GetSafeHdc(), hOldBrush); DeleteObject (hNewBrush); ButtonWnd->GetDlgItem(id)->EndPaint(&ps); } int CConViewApp::ExitInstance() { if (m_pRasterIO) m_pRasterIO->Release(); if (m_pRaster) m_pRaster->Release(); if (m_pRasterDlgFile) { LPUNKNOWN pUnkSink = m_pRasterFileDlgSink->GetIDispatch(FALSE); AfxConnectionUnadvise(m_pRasterDlgFile, DIID__ILEADRasterDlgFileEvents, pUnkSink, FALSE, m_dwCookie); delete m_pRasterFileDlgSink; m_pRasterDlgFile->Release(); } if (m_pRasterDlgKrn) { m_pRasterDlgKrn->FreeDlg(); m_pRasterDlgKrn->Release(); } CoUninitialize(); return CWinApp::ExitInstance(); }