www.pudn.com > 6433624505.rar > BrowserDlg.cpp
// BrowserDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Browser.h"
#include "BrowserDlg.h"
#include "CreateTable.h"
#include "Alltable.h"
#include "ExecuteSQL.h"
#include "LookView.h"
#include "AllUser.h"
#include "Other.h"
#include "HyperLink.h"
#include "MinBar.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();
virtual BOOL OnInitDialog();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CBitmapButton m_Ok;
CHyperLink m_Email;
CBitmap m_bitmapground;
//}}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 void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}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)
DDX_Control(pDX, IDOK, m_Ok);
DDX_Control(pDX, IDC_EMAIL, m_Email);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_bitmapground.LoadBitmap(IDB_ABOUTBOX);
m_Ok.LoadBitmaps(IDB_OKONE,IDB_OKTWO);
m_Email.SetURL(_T("mailto:wentao_gao@yahoo.com.cn"));
return TRUE;
}
void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
BITMAP bitMap;
m_bitmapground.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&m_bitmapground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
CDialog::OnPaint();
}
void CAboutDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if(point.x >=5 && point.x <= 420 && point.y >= 2 && point.y <= 25)
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
/////////////////////////////////////////////////////////////////////////////
// CBrowserDlg dialog
CBrowserDlg::CBrowserDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBrowserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBrowserDlg)
m_DBname = _T("");
m_User = _T("");
m_Psw = _T("");
m_SQL = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
CBrowserDlg::~CBrowserDlg()
{
if(pConn)
{
if(SuccessOrFiald)
{
pConn->Close();
pConn.Release();
}
}
::CoUninitialize();
}
void CBrowserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBrowserDlg)
DDX_Control(pDX, IDC_CONN, m_Conn);
DDX_Control(pDX, IDC_TABLESPACE, m_Tablespace);
DDX_Control(pDX, IDC_OTHER, m_LookOther);
DDX_Control(pDX, IDC_LOOKVIEW, m_LookView);
DDX_Control(pDX, IDC_LOOKUSER, m_LookUser);
DDX_Text(pDX, IDC_DBNAME, m_DBname);
DDX_Text(pDX, IDC_USER, m_User);
DDX_Text(pDX, IDC_PSW, m_Psw);
DDX_Text(pDX, IDC_SQL, m_SQL);
DDX_Control(pDX, IDCANCEL, m_BtClose);
DDX_Control(pDX, IDSHOWMIN, m_ShowMin);
DDX_Control(pDX, IDM_ABOUTBOX, m_About);
DDX_Control(pDX, IDC_CreateTable, m_Create);
DDX_Control(pDX, IDC_EXECUTE, m_Execute);
DDX_Control(pDX, IDOK, m_Tuichu);
DDX_Control(pDX, IDC_ALLTABLE, m_Table);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBrowserDlg, CDialog)
//{{AFX_MSG_MAP(CBrowserDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_CreateTable, OnCreateTable)
ON_BN_CLICKED(IDC_ALLTABLE, OnAlltable)
ON_BN_CLICKED(IDC_CONN, OnConn)
ON_BN_CLICKED(IDC_EXECUTE, OnExecute)
ON_BN_CLICKED(IDC_LOOKVIEW, OnLookview)
ON_BN_CLICKED(IDC_LOOKUSER, OnLookuser)
ON_BN_CLICKED(IDC_TABLESPACE, OnTablespace)
ON_BN_CLICKED(IDC_OTHER, OnOther)
ON_BN_CLICKED(IDM_ABOUTBOX, OnAboutbox)
ON_WM_LBUTTONDOWN()
ON_BN_CLICKED(IDSHOWMIN, OnShowmin)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBrowserDlg message handlers
BOOL CBrowserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
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); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
ModifyStyle( WS_CAPTION,WS_MINIMIZEBOX, SWP_DRAWFRAME );
SetWindowText("数据库查看器");
m_bitmapground.LoadBitmap(IDB_BACKGROUND);
m_BtClose.LoadBitmaps(IDB_CLOSEONE,IDB_CLOSETWO);
m_ShowMin.LoadBitmaps(IDB_MINONE,IDB_MINTWO);
m_About.LoadBitmaps(IDB_ABOUTONE,IDB_ABOUTTWO);
m_Create.LoadBitmaps(IDB_CREATETWO);
m_Tuichu.LoadBitmaps(IDB_TUICHUONE,IDB_TUICHUTWO);
m_Execute.LoadBitmaps(IDB_EXECUTETWO);
m_Table.LoadBitmaps(IDB_TABLETWO);
m_LookView.LoadBitmaps(IDB_VIEWTWO);
m_LookUser.LoadBitmaps(IDB_USERTWO);
m_Tablespace.LoadBitmaps(IDB_TABLESPACETWO);
m_LookOther.LoadBitmaps(IDB_OTHERTWO);
m_Conn.LoadBitmaps(IDB_CONNONE,IDB_CONNTWO);
if(FAILED(::CoInitialize(NULL)))
{
::MessageBox(NULL,"COM Init error","Error",MB_OK);
exit(-1);
}
GetDlgItem(IDC_SQL)->EnableWindow(FALSE);
GetDlgItem(IDC_EXECUTE)->EnableWindow(FALSE);
GetDlgItem(IDC_ALLTABLE)->EnableWindow(FALSE);
GetDlgItem(IDC_CreateTable)->EnableWindow(FALSE);
GetDlgItem(IDC_LOOKVIEW)->EnableWindow(FALSE);
GetDlgItem(IDC_LOOKUSER)->EnableWindow(FALSE);
GetDlgItem(IDC_TABLESPACE)->EnableWindow(FALSE);
GetDlgItem(IDC_OTHER)->EnableWindow(FALSE);
SuccessOrFiald = FALSE;
return TRUE;
}
void CBrowserDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CBrowserDlg::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
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
BITMAP bitMap;
m_bitmapground.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&m_bitmapground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
dc.SetBkColor(RGB(99,103,105));
dc.SetTextColor(RGB(200,200,200));
dc.TextOut(34,36,_T("连接数据库"));
dc.TextOut(41,68,_T("数据库名"));
dc.TextOut(44,100,_T("用 户 名"));
dc.TextOut(44,131,_T("密 码"));
dc.TextOut(30,166,_T("SQL 语句查询"));
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CBrowserDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CBrowserDlg::OnCreateTable()
{
CCreateTable crtb;
crtb.pConn =pConn;
crtb.DoModal();
}
void CBrowserDlg::OnAlltable()
{
CAlltable all;
all.pConn = pConn;
all.select = 0;
all.DoModal();
}
void CBrowserDlg::OnConn()
{
this->UpdateData(true);
if(m_DBname == "")
{
AfxMessageBox("数据库名为空!");
return;
}
if(m_User == "")
{
AfxMessageBox("用户名为空!");
return;
}
if(m_Psw == "")
{
AfxMessageBox("密码为空!");
return;
}
CString connectstr;
connectstr.Format("Provider = MSDAORA;Data Source = \'%s\';User Id = \'%s\'; Password = \'%s\'",m_DBname,m_User,m_Psw);
_bstr_t conn = connectstr;
try
{
pConn.CreateInstance(__uuidof(Connection));
pConn->ConnectionString = conn;
pConn->Open("","","",-1);
AfxMessageBox("连接成功!");
m_BtClose.LoadBitmaps(IDB_CLOSEONE,IDB_CLOSETWO);
m_ShowMin.LoadBitmaps(IDB_MINONE,IDB_MINTWO);
m_About.LoadBitmaps(IDB_ABOUTONE,IDB_ABOUTTWO);
m_Create.LoadBitmaps(IDB_CREATEONE,IDB_CREATETWO);
m_Tuichu.LoadBitmaps(IDB_TUICHUONE,IDB_TUICHUTWO);
m_Execute.LoadBitmaps(IDB_EXECUTEONE,IDB_EXECUTETWO);
m_Table.LoadBitmaps(IDB_TABLEONE,IDB_TABLETWO);
m_LookView.LoadBitmaps(IDB_VIEWONE,IDB_VIEWTWO);
m_LookUser.LoadBitmaps(IDB_USERONE,IDB_USERTWO);
m_Tablespace.LoadBitmaps(IDB_TABLESPACEONE,IDB_TABLESPACETWO);
m_LookOther.LoadBitmaps(IDB_OTHERONE,IDB_OTHERTWO);
m_Conn.LoadBitmaps(IDB_CONNONE,IDB_CONNTWO);
GetDlgItem(IDC_SQL)->EnableWindow(TRUE);
GetDlgItem(IDC_EXECUTE)->EnableWindow(TRUE);
GetDlgItem(IDC_ALLTABLE)->EnableWindow(TRUE);
GetDlgItem(IDC_CreateTable)->EnableWindow(TRUE);
GetDlgItem(IDC_LOOKVIEW)->EnableWindow(TRUE);
GetDlgItem(IDC_LOOKUSER)->EnableWindow(TRUE);
GetDlgItem(IDC_TABLESPACE)->EnableWindow(TRUE);
GetDlgItem(IDC_OTHER)->EnableWindow(TRUE);
::SetWindowText(this->m_hWnd,"数据库查看器 当前连接 --- "+m_User);
SuccessOrFiald = TRUE;
OnPaint();
}
catch(_com_error& e)
{
AfxMessageBox(e.Description());
}
}
void CBrowserDlg::OnExecute()
{
this->UpdateData(true);
CExecuteSQL exe;
exe.pConn = pConn;
exe.m_StaticSQL = m_SQL;
exe.DoModal();
m_SQL = "";
this->UpdateData(false);
}
void CBrowserDlg::OnLookview()
{
CLookView view;
view.pConn = pConn;
view.DoModal();
}
void CBrowserDlg::OnLookuser()
{
CAllUser user;
user.select = 0;
user.pConn = pConn;
user.DoModal();
}
void CBrowserDlg::OnTablespace()
{
CAllUser user;
user.select = 1;
user.User = m_User;
user.pConn = pConn;
user.DoModal();
}
void CBrowserDlg::OnOther()
{
COther other;
other.pConn = pConn;
other.DoModal();
}
void CBrowserDlg::OnAboutbox()
{
CAboutDlg guanyu;
guanyu.DoModal();
}
void CBrowserDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if(point.x >=5 && point.x <= 65 && point.y >= 2 && point.y <=30)
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
void CBrowserDlg::OnShowmin()
{
CMinBar minbar;
this->ShowWindow(SW_HIDE);
minbar.DoModal();
this->ShowWindow(SW_SHOW);
}