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); 
}