gusucode.com > ADO智能开发包C++源码程序 > ADO智能开发包/sfxdb_src_1.0.510.1/sfx/Examples/AdoControl/TestMainDlg.cpp
/******************************************************* 《ADO智能组件》演示程序 版权所有(c) 2004-2005 许松森保留所有权力。 有关最新信息请访问 http://www.willspace.net 站 点,电子信箱 ytf1978#163.com(#号换为@号) ********************************************************/ #include "stdafx.h" #include "AdoControl.h" #include "ADODB.h" #include "TestMainDlg.h" #include <tchar.h> #include "HyperLink.h" #include ".\testmaindlg.h" #include <Shlwapi.h> //#include <gdiplus.h> //#include <Gdiplusinit.h> //GdiplusStartup #ifdef _DEBUG #define new DEBUG_NEW #endif class CAboutDlg : public CDialog { public: CAboutDlg(); enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual BOOL OnInitDialog(); protected: DECLARE_MESSAGE_MAP() CHyperLink m_Url; CHyperLink m_Email; }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_URL, m_Url); DDX_Control(pDX, IDC_STATIC_EMAIL, m_Email); } #define IDS_MAILADDR _T("mailto:ytf1978@163.com") #define IDS_WEBADDR _T("http://www.willspace.net") BOOL CAboutDlg::OnInitDialog() { CDialog::OnInitDialog(); m_Url.SetURL(IDS_WEBADDR); m_Email.SetURL(IDS_MAILADDR); return TRUE; } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() ////////////////////////////////////////////////////////////////////////// CTestMainDlg::CTestMainDlg() : CDialog(CTestMainDlg::IDD, NULL) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CTestMainDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CTestMainDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND(ID_FILE_CLOSE, OnFileClose) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_ABOUT, OnAbout) ON_WM_CLOSE() ON_COMMAND(ID_QUIT, OnQuit) END_MESSAGE_MAP() // CTestMainDlg 消息处理程序 void CTestMainDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { OnAbout(); } else { CDialog::OnSysCommand(nID, lParam); } } void CTestMainDlg::OnAbout() { CAboutDlg dlgAbout; dlgAbout.DoModal(); } void CTestMainDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); 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; dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } HCURSOR CTestMainDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } /************************************************************************* 以下代码是数据库操作代码段。 *************************************************************************/ BOOL CTestMainDlg::OnInitDialog() { CDialog::OnInitDialog(); // IDM_ABOUTBOX 必须在系统命令范围内。 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); } } SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); try { RECT Rect; m_Menu.LoadMenu(IDR_MAIN_MENU); SetMenu(&m_Menu); GetClientRect(&Rect); //建立公具条 m_Navigator.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_LIST); m_Navigator.InitButtons(); m_Navigator.ShowText(true); m_Navigator.SetAdoRecordset(&m_Recordset); m_Navigator.SetPos(0, 0); InitTabCtrl(); } catch (_com_error &e) { adoShowComError(m_hWnd, e); } catch (TException &Exc) { MessageBox(Exc.m_Message); } return TRUE; } BOOL CTestMainDlg::OnCommand(WPARAM wParam, LPARAM lParam) { //如果是工具条的命令,就什么也不执行,返回。 if ((HWND)lParam == m_Navigator.m_hWnd) { return TRUE; } return CDialog::OnCommand(wParam, lParam); } // 初始化所有对话框到TabCtrl void CTestMainDlg::InitTabCtrl(void) { RECT Rect; HWND hWndTemp = ::GetDlgItem(m_hWnd, IDC_STATIC_TEMP); ASSERT(NULL != hWndTemp); ::GetWindowRect(hWndTemp, &Rect); m_Sheet.AddPage(&m_ControlPage); m_Sheet.AddPage(&m_GridPage); m_Sheet.Create(this, WS_CHILD|WS_VISIBLE, 0); m_Sheet.ModifyStyleEx(0, WS_EX_CONTROLPARENT); m_Sheet.ModifyStyle(0, WS_TABSTOP); ScreenToClient(&Rect); m_Sheet.SetWindowPos(NULL, Rect.left, Rect.top, Rect.right, Rect.bottom, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE); ::DestroyWindow(hWndTemp); //设置数据集控件是只读的。 m_Recordset.SetReadOnly(true); } void CTestMainDlg::OnFileOpen() { try { //打开数据库。 CString mdbFileName; TCHAR lpszFileName[MAX_PATH] = _T("\0"); GetModuleFileName(NULL, lpszFileName, MAX_PATH); ::PathRemoveFileSpec(lpszFileName); mdbFileName.Format(_T("%s\\%s"), lpszFileName, _T("联系人.mdb")); if (m_Connection.Open(dtAccess2000, mdbFileName, _T(""), _T(""))) { //打开数据表。 m_Recordset.SetAdoConnection(&m_Connection); m_Recordset.SetReadOnly(TRUE); m_Recordset.SetEnableUpdate(true); m_Recordset.Open(_T("SELECT * FROM 联系人")); } }catch (_com_error e) { adoShowComError(m_hWnd, e); } } void CTestMainDlg::OnFileClose() { try { //如果数据库是打开状态,就关闭数据库 if (m_Connection.IsConnect()) { //不用关闭打开的表或者视图,CAdoConnection会自动关闭它们。 //m_Recordset.Close(); //关闭表或者视图 m_Connection.Close(); } }catch (_com_error e) { adoShowComError(m_hWnd, e); } } void CTestMainDlg::OnClose() { OnFileClose(); CDialog::OnClose(); } void CTestMainDlg::OnQuit() { OnFileClose(); CDialog::OnOK(); }