// OLEDBDlg.cpp : implementation file // #include "stdafx.h" #include "OLEDB.h" #include "OLEDBDlg.h" #include "..\..\..\..\include\l_ocx40.h" //#include "..\..\..\..\include\ltdlgocx.h" #include "_recordset.h" #include "fields.h" #include "field.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // 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) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // COLEDBDlg dialog COLEDBDlg::COLEDBDlg(CWnd* pParent /*=NULL*/) : CDialog(COLEDBDlg::IDD, pParent) { //{{AFX_DATA_INIT(COLEDBDlg) //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_bValid = FALSE; m_bNoDataBase = FALSE; m_pRasterKrnDlg = NULL; m_pRasterKrnDlg = NULL; m_pRasterFileDlg = NULL; } void COLEDBDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COLEDBDlg) DDX_Control(pDX, IDC_EDIT1, m_Text1); DDX_Control(pDX, IDC_EDIT2, m_Text2); DDX_Control(pDX, IDC_LEADCTRL1, m_LEAD1); DDX_Control(pDX, IDC_ADODC1, m_ADODC1); // DDX_Control(pDX, IDC_LEADDLGCTRL1, m_LEADDlg1); DDX_Control(pDX, IDC_LEADOLEDBCTRL1, m_LEADOLEDB1); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(COLEDBDlg, CDialog) //{{AFX_MSG_MAP(COLEDBDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_FLIP, OnFlip) ON_COMMAND(ID_EDIT_TOOL_AUDIO, OnEditToolAudio) ON_COMMAND(ID_EDIT_TOOL_BUTTON, OnEditToolButton) ON_COMMAND(ID_EDIT_TOOL_ELLIPSE, OnEditToolEllipse) ON_COMMAND(ID_EDIT_TOOL_FREEHAND, OnEditToolFreehand) ON_COMMAND(ID_EDIT_TOOL_HILITE, OnEditToolHilite) ON_COMMAND(ID_EDIT_TOOL_HOTSPOT, OnEditToolHotspot) ON_COMMAND(ID_EDIT_TOOL_LINE, OnEditToolLine) ON_COMMAND(ID_EDIT_TOOL_NOTE, OnEditToolNote) ON_COMMAND(ID_EDIT_TOOL_POINTER, OnEditToolPointer) ON_COMMAND(ID_EDIT_TOOL_POLYGON, OnEditToolPolygon) ON_COMMAND(ID_EDIT_TOOL_POLYLINE, OnEditToolPolyline) ON_COMMAND(ID_EDIT_TOOL_RECT, OnEditToolRect) ON_COMMAND(ID_EDIT_TOOL_REDACT, OnEditToolRedact) ON_COMMAND(ID_EDIT_TOOL_RULER, OnEditToolRuler) ON_COMMAND(ID_EDIT_TOOL_SELECT, OnEditToolSelect) ON_COMMAND(ID_EDIT_TOOL_STAMP, OnEditToolStamp) ON_COMMAND(ID_EDIT_TOOL_TEXT, OnEditToolText) ON_COMMAND(ID_EDIT_USERMODE_DESIGN, OnEditUsermodeDesign) ON_COMMAND(ID_EDIT_USERMODE_NONE, OnEditUsermodeNone) ON_COMMAND(ID_EDIT_USERMODE_RUN, OnEditUsermodeRun) ON_BN_CLICKED(IDC_ADDREC, OnAddrec) ON_BN_CLICKED(IDC_DELREC, OnDelrec) ON_BN_CLICKED(IDC_FINDREC, OnFindrec) ON_WM_DESTROY() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // COLEDBDlg message handlers BOOL COLEDBDlg::OnInitDialog() { CDialog::OnInitDialog(); if(m_bNoDataBase) { EndDialog(0); return FALSE; } // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 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 // TODO: Add extra initialization here HRESULT hr; CoInitialize(NULL); m_pRasterKrnDlg = NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgKrn_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgKrn_D, (void**)&m_pRasterKrnDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);EndDialog(0);return FALSE;} m_pRasterKrnDlg->InitDlg(INIT_WITHOUT_COLOR); m_pRasterKrnDlg->EnableMethodErrors = FALSE; m_pRasterFileDlg=NULL; hr = CoCreateInstance( CLSID_LEADRasterDlgFile_D, NULL, CLSCTX_ALL, IID_ILEADRasterDlgFile_D, (void**)&m_pRasterFileDlg ); if (FAILED(hr)){DisplayLEADError(ERROR_INV_PARAMETER);EndDialog(0); return FALSE;} m_pRasterFileDlg->EnableMethodErrors = FALSE; m_bDataDirty = FALSE; m_bQuit = FALSE; UNLOCKSUPPORT(m_LEAD1); m_LEAD1.SetPaintSizeMode(PAINTSIZEMODE_FIT); m_LEAD1.SetAnnUserMode(ANNUSERMODE_DESIGN); m_LEAD1.SetAnnTool(ANNTOOL_SELECT); m_LEAD1.SetAutoScroll(FALSE); m_LEAD1.SetAutoRepaint(TRUE); // //first, create a dummy image so the main control will have a valid bitmaphandle // //and we can avoid doing an expensive copy after loading from the database // m_LEAD1.CreateBitmap(1, 1, 24); // //now, assign that bitmaphandle to the OLEDB control so it can refrence it directly // m_LEADOLEDB1.SetBitmap(m_LEAD1.GetBitmap()); //databind performed at design-time, except for the data field m_LEADOLEDB1.SetDataField("photo"); m_bValid = TRUE; m_bDeleted = FALSE; //Set the data properties on the LEAD OLE DB control m_LEADOLEDB1.SetDataLoadBits(0); m_LEADOLEDB1.SetDataSaveBits(24); m_LEADOLEDB1.SetDataSaveFormat(FILE_LEAD); m_LEADOLEDB1.SetDataSaveQuality(QFACTOR_QMS); //manually update the text control with the data from the text field C_Recordset recset; recset = m_ADODC1.GetRecordset(); VARIANT vax; VariantInit(&vax); VARIANT vaval; VariantInit(&vaval); CFields Fields; CField cwho; Fields = recset.GetFields(); vax.vt = VT_I4; vax.lVal = 0; cwho = Fields.GetItem(vax); vaval = cwho.GetValue(); CString csText(vaval.bstrVal); SysFreeString(vaval.bstrVal); m_Text1.SetWindowText(csText); return TRUE; // return TRUE unless you set the focus to a control } void COLEDBDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void COLEDBDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR COLEDBDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void COLEDBDlg::OnFlip() { //Flip the image m_LEAD1.Flip(); m_LEAD1.AnnFlip(TRUE, m_LEAD1.GetBitmapHeight() / 2, FALSE); m_bDataDirty = TRUE; } BEGIN_EVENTSINK_MAP(COLEDBDlg, CDialog) //{{AFX_EVENTSINK_MAP(COLEDBDlg) ON_EVENT(COLEDBDlg, IDC_ADODC1, 200 /* WillMove */, OnWillMoveAdodc1, VTS_I4 VTS_PI4 VTS_DISPATCH) ON_EVENT(COLEDBDlg, IDC_ADODC1, 201 /* MoveComplete */, OnMoveCompleteAdodc1, VTS_I4 VTS_DISPATCH VTS_PI4 VTS_DISPATCH) ON_EVENT(COLEDBDlg, IDC_LEADCTRL1, 19 /* AnnLocked */, OnAnnLockedLeadctrl1, VTS_I4) ON_EVENT(COLEDBDlg, IDC_LEADCTRL1, 20 /* AnnUnlocked */, OnAnnUnlockedLeadctrl1, VTS_I4) ON_EVENT(COLEDBDlg, IDC_LEADCTRL1, 13 /* AnnChange */, OnAnnChangeLeadctrl1, VTS_I4) ON_EVENT(COLEDBDlg, IDC_LEADCTRL1, 9 /* AnnDestroy */, OnAnnDestroyLeadctrl1, VTS_I4) ON_EVENT(COLEDBDlg, IDC_LEADCTRL1, 8 /* AnnCreate */, OnAnnCreateLeadctrl1, VTS_I4) ON_EVENT(COLEDBDlg, IDC_ADODC1, 211 /* Error */, OnErrorAdodc1, VTS_I4 VTS_PBSTR VTS_I4 VTS_BSTR VTS_BSTR VTS_I4 VTS_PBOOL) ON_EVENT(COLEDBDlg, IDC_LEADCTRL1, -600 /* Click */, OnClickLeadctrl1, VTS_NONE) ON_EVENT(COLEDBDlg, IDC_LEADOLEDBCTRL1, 1 /* DataLoaded */, OnDataLoadedLeadoledbctrl1, VTS_I2) ON_EVENT(COLEDBDlg, IDC_LEADOLEDBCTRL1, 2 /* DataSaved */, OnDataSavedLeadoledbctrl1, VTS_I2) ON_EVENT(COLEDBDlg, IDC_LEADOLEDBCTRL1, 3 /* ProgressStatus */, OnProgressStatusLeadoledbctrl1, VTS_I2) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void COLEDBDlg::OnWillMoveAdodc1(long adReason, long FAR* adStatus, LPDISPATCH pRecordset) { if(m_bValid) // if the dialog has not been fully created yet, skip this { m_bNoDataBase = FALSE; //clear the existing ann objects m_LEADOLEDB1.SetAnnContainer(0); //clear exising references m_LEADOLEDB1.SetBitmap(0); m_bQuit = FALSE; m_LEADOLEDB1.SetEnableProgressEvent(TRUE); if(m_LEAD1.GetBitmap() > 0) { if(m_LEAD1.GetBitmapBits() == 1) { m_LEADOLEDB1.SetDataSaveBits(1); m_LEADOLEDB1.SetDataSaveFormat(FILE_LEAD1BIT); m_LEADOLEDB1.SetDataSaveQuality(0); } else { m_LEADOLEDB1.SetDataSaveBits(24); m_LEADOLEDB1.SetDataSaveFormat(FILE_LEAD); m_LEADOLEDB1.SetDataSaveQuality(QFACTOR_QMS); } } // if(m_LEAD1.GetBitmap == 0) // { // //first, create a dummy image so the main control will have a valid bitmaphandle // //and we can avoid doing an expensive copy after loading from the database // m_LEADOLEDB1.SetBitmap(0); //release any previous reference // m_LEAD1.CreateBitmap(1, 1, 24); // //now, assign that bitmaphandle to the OLEDB control so it can refrence it directly // m_LEADOLEDB1.SetBitmap(m_LEAD1.GetBitmap()); // } if(m_bDataDirty) { //assign the bitmap to be saved m_LEADOLEDB1.SetBitmap(m_LEAD1.GetBitmap()); //assign the ann objects to be saved m_LEADOLEDB1.SetAnnContainer(m_LEAD1.GetAnnContainer()); m_LEADOLEDB1.SetDataDirty(m_bDataDirty); } else m_LEAD1.SetAnnContainer(0); //free existing ann objects } } void COLEDBDlg::OnMoveCompleteAdodc1(long adReason, LPDISPATCH pError, long FAR* adStatus, LPDISPATCH pRecordset) { if(m_bValid) { m_bNoDataBase = FALSE; m_bDataDirty = FALSE; //manually update the text control with the data from the text field C_Recordset recset; recset = m_ADODC1.GetRecordset(); VARIANT vax; VariantInit(&vax); VARIANT vaval; VariantInit(&vaval); CFields Fields; CField cwho; Fields = recset.GetFields(); vax.vt = VT_I4; vax.lVal = 0; if(!m_bDeleted) { cwho = Fields.GetItem(vax); vaval = cwho.GetValue(); CString csText(vaval.bstrVal); SysFreeString(vaval.bstrVal); m_Text1.SetWindowText(csText); } else { CString csText(""); m_Text1.SetWindowText(csText); } } } void COLEDBDlg::OnAnnLockedLeadctrl1(long hObject) { m_bDataDirty = TRUE; } void COLEDBDlg::OnAnnUnlockedLeadctrl1(long hObject) { m_bDataDirty = TRUE; } void COLEDBDlg::OnAnnChangeLeadctrl1(long hObject) { m_bDataDirty = TRUE; } void COLEDBDlg::OnAnnDestroyLeadctrl1(long hObject) { m_bDataDirty = TRUE; } void COLEDBDlg::OnAnnCreateLeadctrl1(long hObject) { m_bDataDirty = TRUE; } void COLEDBDlg::OnEditToolAudio() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_AUDIO, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_AUDIO); } void COLEDBDlg::OnEditToolButton() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_BUTTON, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_BUTTON); } void COLEDBDlg::OnEditToolEllipse() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_ELLIPSE, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_ELLIPSE); } void COLEDBDlg::OnEditToolFreehand() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_FREEHAND, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_FREEHAND); } void COLEDBDlg::OnEditToolHilite() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_HILITE, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_HILITE); } void COLEDBDlg::OnEditToolHotspot() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_HOTSPOT, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_HOTSPOT); } void COLEDBDlg::OnEditToolLine() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_LINE, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_LINE); } void COLEDBDlg::OnEditToolNote() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_NOTE, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_NOTE); } void COLEDBDlg::OnEditToolPointer() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_POINTER, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_POINTER); } void COLEDBDlg::OnEditToolPolygon() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_POLYGON, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_POLYGON); } void COLEDBDlg::OnEditToolPolyline() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_POLYLINE, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_POLYLINE); } void COLEDBDlg::OnEditToolRect() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_RECT, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_RECT); } void COLEDBDlg::OnEditToolRedact() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_REDACT, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_REDACT); } void COLEDBDlg::OnEditToolRuler() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_RULER, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_RULER); } void COLEDBDlg::OnEditToolSelect() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_SELECT, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_SELECT); } void COLEDBDlg::OnEditToolStamp() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_STAMP, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_STAMP); } void COLEDBDlg::OnEditToolText() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_TOOL_SELECT;x<=ID_EDIT_TOOL_RULER;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_TOOL_TEXT, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnTool(ANNTOOL_TEXT); } void COLEDBDlg::OnEditUsermodeDesign() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_USERMODE_NONE;x<=ID_EDIT_USERMODE_RUN;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_USERMODE_DESIGN, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnUserMode(ANNUSERMODE_DESIGN); } void COLEDBDlg::OnEditUsermodeNone() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_USERMODE_NONE;x<=ID_EDIT_USERMODE_RUN;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_USERMODE_NONE, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnUserMode(ANNUSERMODE_NONE); } void COLEDBDlg::OnEditUsermodeRun() { CMenu* pMenu = GetMenu(); if(pMenu) { for(int x=ID_EDIT_USERMODE_NONE;x<=ID_EDIT_USERMODE_RUN;x++) { pMenu->CheckMenuItem(x, MF_BYCOMMAND|MF_UNCHECKED); } pMenu->CheckMenuItem(ID_EDIT_USERMODE_RUN, MF_BYCOMMAND|MF_CHECKED); } m_LEAD1.SetAnnUserMode(ANNUSERMODE_RUN); } void COLEDBDlg::OnAddrec() { VARIANT va1; VARIANT va2; C_Recordset recset; CString csMyFile; VariantInit(&va1); VariantInit(&va2); // release any reference m_LEADOLEDB1.SetBitmap(0); m_pRasterFileDlg->PutFilter(""); m_pRasterFileDlg->PutFileDlgFlags(0); m_pRasterFileDlg->PutDialogTitle("Open File"); m_pRasterFileDlg->PutUIFlags( OPEN_SHOW_MULTIPAGE | OPEN_SHOW_PREVIEW | OPEN_USEFILESTAMP | OPEN_SHOW_FILEINFO | OPEN_SHOW_LOADOPTIONS | OPEN_SHOW_LOADCOMPRESSED | OPEN_SHOW_LOADROTATED | OPEN_SHOW_DELPAGE | OPEN_SHOW_PDFOPTIONS | OPEN_SHOW_RASTEROPTIONS | OPEN_SHOW_VECTOROPTIONS | OPEN_VIEWTOTALPAGES | OPEN_ENABLESIZING ); m_pRasterFileDlg->ShowOpenDlg((long)this->m_hWnd); csMyFile = m_pRasterFileDlg->GetFileName().copy(); /////////////Delllll // CFileDialog MSCommDlg(TRUE); // MSCommDlg.DoModal(); // csMyFile = MSCommDlg.GetFileName(); /////////////Delllll m_Text1.SetWindowText(csMyFile); if(csMyFile.GetLength()) { // Hide the Lead control while we update the recordset m_LEAD1.ShowWindow(SW_HIDE); recset = m_ADODC1.GetRecordset(); CFields Fields; CField cwho; Fields = recset.GetFields(); va1.vt = VT_I4; va1.lVal = 0; va2.vt = VT_BSTR; va2.bstrVal = csMyFile.AllocSysString(); recset.AddNew(va1, va2); m_LEAD1.Load(csMyFile, 0, 1, 1); m_bDataDirty = TRUE; m_LEADOLEDB1.SetDataDirty(TRUE); recset.Update(va1, va2); ::SysFreeString(va2.bstrVal); // Requery the data control's recordset recset.Requery(0); // Go to the new record, and show the LEAD control m_LEAD1.ShowWindow(SW_SHOW); CString csSearch; csSearch = "who = '" + csMyFile + "'"; va1 = recset.GetBookmark(); recset.Find((LPCTSTR)csSearch, 0, 1/*search forward*/, va1); } } void COLEDBDlg::OnDelrec() { // Hide the LEAD control. m_LEAD1.ShowWindow(SW_HIDE); // Delete the record C_Recordset recset; recset = m_ADODC1.GetRecordset(); recset.Delete(1);//delete current record only // Requery the recordset m_bDeleted = TRUE; recset.Requery(0); m_LEAD1.ShowWindow(SW_SHOW); m_bDeleted = FALSE; if(recset.GetEof()) recset.MoveLast(); } void COLEDBDlg::OnFindrec() { //On Error GoTo NOTFOUND1 // Go to the first record that matches the specified text CString csInText; m_Text2.GetWindowText(csInText); CString csSearch; VARIANT va; C_Recordset recset; if(csInText.GetLength() > 0) { VariantInit(&va); recset = m_ADODC1.GetRecordset(); csSearch = "who LIKE '*" + csInText + "*'"; va = recset.GetBookmark(); recset.Find((LPCTSTR)csSearch, 0, 1/*search forward*/, va); } } void COLEDBDlg::OnErrorAdodc1(long ErrorNumber, BSTR FAR* Description, long Scode, LPCTSTR Source, LPCTSTR HelpFile, long HelpContext, BOOL FAR* fCancelDisplay) { _bstr_t t(*Description); CString cs = (char*)t; AfxMessageBox("Error: " + cs); if(ErrorNumber == 0x00004005) { m_bNoDataBase = TRUE; return; } VARIANT va; VariantInit(&va); C_Recordset recset; recset = m_ADODC1.GetRecordset(); recset.MoveFirst(); } void COLEDBDlg::OnClickLeadctrl1() { m_bQuit = TRUE; } void COLEDBDlg::OnDataLoadedLeadoledbctrl1(short nStatus) { if (!::IsWindow(m_LEAD1)) return; if(nStatus == 0) { m_LEAD1.SetRefBitmap(TRUE); //don't make a copy m_LEAD1.SetBitmap(m_LEADOLEDB1.GetBitmap()); //send the image to the LEAD OCX m_LEAD1.SetRefBitmap(FALSE); //reset m_LEAD1.SetAnnContainer(0); m_LEAD1.SetAnnContainer(m_LEADOLEDB1.GetAnnContainer()); } else if(nStatus == ERROR_FILENOTFOUND) //if it's an empty record m_LEAD1.SetBitmap(0); else if (nStatus != ERROR_FILENOTFOUND) //if it's not an empty record { m_LEAD1.SetBitmap(0); AfxMessageBox("Error loading from database!"); } m_LEAD1.ForceRepaint(); m_bDataDirty = FALSE; } void COLEDBDlg::OnDataSavedLeadoledbctrl1(short nStatus) { m_LEADOLEDB1.SetBitmap(0); //free the current reference m_LEAD1.SetBitmap(0); //free the current bitmap if(nStatus != 0) { m_LEAD1.ForceRepaint(); AfxMessageBox("Error saving to database!"); } } void COLEDBDlg::OnProgressStatusLeadoledbctrl1(short nPercent) { CString csOut; MSG msg; csOut.Format("%d", nPercent); csOut = csOut + "%"; SetWindowText(csOut); // are there any messages in the queue (like a button being pressed) ? while( PeekMessage(&msg,NULL, 0, 0, PM_REMOVE) ) { TranslateMessage( &msg ); /* Translates virtual key codes. */ DispatchMessage( &msg ); /* Dispatches message to window. */ } //user asked to stop if(m_bQuit) m_LEADOLEDB1.SetEnableProgressEvent(FALSE); } int COLEDBDlg::DisplayLEADError(int nCode) { CString str; if(nCode) { str.Format("A LEADTOOLS error has occured.\nCODE = %d", nCode); MessageBox(str); } return(nCode); } void COLEDBDlg::OnDestroy() { CDialog::OnDestroy(); if (m_pRasterKrnDlg != NULL) m_pRasterKrnDlg->FreeDlg(); if (m_pRasterKrnDlg != NULL) m_pRasterKrnDlg->Release(); if (m_pRasterFileDlg != NULL) m_pRasterFileDlg->Release(); CoUninitialize(); }