mirror of
https://github.com/MariaDB/server.git
synced 2025-06-25 06:22:03 +03:00
additions for compiling for Win via samba
This commit is contained in:
687
VC++Files/mysqlmanager/TOOLSQL.CPP
Normal file
687
VC++Files/mysqlmanager/TOOLSQL.CPP
Normal file
@ -0,0 +1,687 @@
|
||||
// ToolSql.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "MySqlManager.h"
|
||||
#include "ToolSql.h"
|
||||
|
||||
#define WINDOW_COORDS 0
|
||||
#define CLIENT_COORDS 1
|
||||
|
||||
#define MY_TIMER_ID 0x1234
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CToolSql::CToolSql(CWnd* pParent,CResource* pServer,CResource* pResource)
|
||||
: CDialog(CToolSql::IDD, pParent)
|
||||
, m_pQuery(0)
|
||||
, m_pResults(0)
|
||||
, m_pStatus(0)
|
||||
, m_pServer(pServer)
|
||||
, m_pResource(pResource)
|
||||
, m_ui_timer(0)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CToolSql)
|
||||
m_nIntervalTimerSeconds = 10;
|
||||
m_bClear = FALSE;
|
||||
//}}AFX_DATA_INIT
|
||||
memset ( & m_lf, 0,sizeof(m_lf) );
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CToolSql::~CToolSql()
|
||||
{
|
||||
|
||||
if (m_ui_timer)
|
||||
{
|
||||
KillTimer(MY_TIMER_ID);
|
||||
}
|
||||
|
||||
if (m_pdb)
|
||||
{
|
||||
mysql_close(m_pdb);
|
||||
}
|
||||
if (m_pQuery)
|
||||
{
|
||||
m_pQuery->DestroyWindow();
|
||||
delete m_pQuery;
|
||||
}
|
||||
if (m_pResults)
|
||||
{
|
||||
m_pResults->DestroyWindow();
|
||||
delete m_pResults;
|
||||
}
|
||||
if (m_pStatus)
|
||||
{
|
||||
m_pStatus->DestroyWindow();
|
||||
delete m_pStatus;
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CToolSql)
|
||||
DDX_Control(pDX, IDC_STOP_PB, m_ctl_Stop);
|
||||
DDX_Control(pDX, IDC_START_PB, m_ctl_Start);
|
||||
DDX_Control(pDX, IDC_SERVER_CB, m_ctl_Server);
|
||||
DDX_Control(pDX, IDC_TAB1, m_tabs);
|
||||
DDX_Text(pDX, IDC_TIMER_SECS, m_nIntervalTimerSeconds);
|
||||
DDV_MinMaxInt(pDX, m_nIntervalTimerSeconds, 1, 120);
|
||||
DDX_Check(pDX, IDC_CLEAR, m_bClear);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CToolSql, CDialog)
|
||||
//{{AFX_MSG_MAP(CToolSql)
|
||||
ON_BN_CLICKED(IDC_QUERY_PB, OnQueryPb)
|
||||
ON_BN_CLICKED(IDC_DATABASES_PB, OnQueryDatabases)
|
||||
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
|
||||
ON_BN_CLICKED(IDC_FONT_PB, OnFontPb)
|
||||
ON_WM_SIZE()
|
||||
ON_BN_CLICKED(IDC_START_PB, OnStartPb)
|
||||
ON_BN_CLICKED(IDC_STOP_PB, OnStopPb)
|
||||
ON_WM_TIMER()
|
||||
ON_WM_DESTROY()
|
||||
ON_BN_CLICKED(IDC_CLEAR, OnClear)
|
||||
ON_COMMAND(IDM_QUERY_EXEC, OnQueryPb)
|
||||
ON_COMMAND(IDM_QUERY_DATABASES, OnQueryDatabases)
|
||||
ON_EN_CHANGE(IDC_TIMER_SECS, OnChangeTimerSecs)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BOOL CToolSql::OnInitDialog()
|
||||
{
|
||||
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_ctl_Start . EnableWindow(TRUE);
|
||||
m_ctl_Stop . EnableWindow(FALSE);
|
||||
|
||||
CString strTitle;
|
||||
|
||||
strTitle.Format ("mySql Query to %s on %s",m_pServer->GetDisplayName(),m_pServer->GetHostName());
|
||||
|
||||
m_ctl_Server.AddString ( m_pServer->GetDisplayName() );
|
||||
m_ctl_Server.SetCurSel (0);
|
||||
|
||||
SetWindowText(strTitle);
|
||||
|
||||
CWaitCursor x;
|
||||
|
||||
m_btn_QueryExec.AutoLoad ( IDC_QUERY_PB, this );
|
||||
m_btn_QueryDatabases.AutoLoad ( IDC_DATABASES_PB, this );
|
||||
m_btn_Font.AutoLoad ( IDC_FONT_PB, this );
|
||||
|
||||
m_tabs.GetWindowRect ( m_rectTab[WINDOW_COORDS] );
|
||||
GetWindowRect ( m_rectDlg[WINDOW_COORDS] );
|
||||
|
||||
m_tabs.GetClientRect ( m_rectTab[CLIENT_COORDS] );
|
||||
GetClientRect ( m_rectDlg[CLIENT_COORDS] );
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
CString strText;
|
||||
strText.LoadString(IDS_QUERY_EXEC);
|
||||
if (!strText.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_QUERY_EXEC, strText);
|
||||
}
|
||||
strText.LoadString(IDS_QUERY_DATABASES);
|
||||
if (!strText.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_QUERY_DATABASES, strText);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m_pdb = new MYSQL;
|
||||
|
||||
CString strQuery ( "Query" );
|
||||
CString strResults ( "Results" );
|
||||
CString strStatus ( "Status" );
|
||||
|
||||
TC_ITEM tc1 = { TCIF_TEXT, 0,0, (LPSTR)(LPCTSTR)strQuery, strQuery.GetLength(), 0,0};
|
||||
TC_ITEM tc2 = { TCIF_TEXT, 0,0, (LPSTR)(LPCTSTR)strResults, strResults.GetLength(), 0,0};
|
||||
TC_ITEM tc3 = { TCIF_TEXT, 0,0, (LPSTR)(LPCTSTR)strStatus, strStatus.GetLength(), 0,0};
|
||||
|
||||
m_tabs.InsertItem ( 0,&tc1 );
|
||||
m_tabs.InsertItem ( 1,&tc2 );
|
||||
m_tabs.InsertItem ( 2,&tc3 );
|
||||
|
||||
m_pQuery = new CToolSqlQuery ( NULL );
|
||||
m_pResults = new CToolSqlResults ( NULL );
|
||||
m_pStatus = new CToolSqlStatus ( NULL );
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
// OpenDatabase();
|
||||
//
|
||||
// m_pSelection->SetDatabase ( & m_db );
|
||||
// m_pScript->SetDatabase ( & m_db );
|
||||
// m_pLog->SetDatabase ( & m_db );
|
||||
|
||||
m_pQuery -> Create ( (LPCTSTR)IDD_TOOL_SQL_QUERY, &m_tabs );
|
||||
m_pResults -> Create ( (LPCTSTR)IDD_TOOL_SQL_RESULTS, &m_tabs );
|
||||
m_pStatus -> Create ( (LPCTSTR)IDD_TOOL_SQL_STATUS, &m_tabs );
|
||||
|
||||
ActivateTab ( 0 );
|
||||
|
||||
m_pQuery -> SetWindowPos(NULL,20,24,0,0,SWP_NOZORDER|SWP_NOSIZE);
|
||||
m_pResults -> SetWindowPos(NULL,20,24,0,0,SWP_NOZORDER|SWP_NOSIZE);
|
||||
m_pStatus -> SetWindowPos(NULL,20,24,0,0,SWP_NOZORDER|SWP_NOSIZE);
|
||||
|
||||
DoOnSize( SIZE_RESTORED, m_rectDlg[CLIENT_COORDS].Width(), m_rectDlg[CLIENT_COORDS].Height() );
|
||||
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
}
|
||||
|
||||
mysql_init(m_pdb);
|
||||
if (!mysql_real_connect(m_pdb,m_pServer->GetHostName(), m_pServer->GetUserName(),m_pServer->GetPassword(),0,m_pServer->GetPortNumber(), NullS,0))
|
||||
{
|
||||
// my_printf_error(0,"connect to server at '%s' failed; error: '%s'",
|
||||
// MYF(ME_BELL), pResource->GetHostName(), mysql_error(&mysql));
|
||||
CString strText;
|
||||
strText.Format ( "connect to server at '%s' failed; error: '%s'", m_pServer->GetHostName(), mysql_error(m_pdb));
|
||||
AfxMessageBox(strText);
|
||||
EndDialog(IDCANCEL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( m_pResource && m_pResource->GetType() == CResource::eDatabase )
|
||||
{
|
||||
CString strDB = m_pResource->GetDisplayName();
|
||||
strDB.TrimRight();
|
||||
if (mysql_select_db(m_pdb,strDB))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::ActivateTab ( int tab )
|
||||
|
||||
{
|
||||
switch (tab)
|
||||
{
|
||||
case 0: ;
|
||||
m_pResults-> ShowWindow(SW_HIDE);
|
||||
m_pStatus-> ShowWindow(SW_HIDE);
|
||||
m_pQuery-> ShowWindow(SW_SHOW);
|
||||
m_pQuery->m_ctl_edit.SetFocus();
|
||||
break;
|
||||
case 1: ;
|
||||
m_pQuery-> ShowWindow(SW_HIDE);
|
||||
m_pStatus-> ShowWindow(SW_HIDE);
|
||||
m_pResults-> ShowWindow(SW_SHOW);
|
||||
m_pResults->m_ctl_edit.SetFocus();
|
||||
break;
|
||||
case 2: ;
|
||||
m_pResults-> ShowWindow(SW_HIDE);
|
||||
m_pQuery-> ShowWindow(SW_HIDE);
|
||||
m_pStatus-> ShowWindow(SW_SHOW);
|
||||
m_pStatus->m_ctl_edit.SetFocus();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CalculateFontSize ( CEdit& ed, CSize& sizeRet )
|
||||
|
||||
{
|
||||
|
||||
CDC* pdc = ed.GetDC();
|
||||
|
||||
int nAveWidth , nAveHeight;
|
||||
int i ;
|
||||
|
||||
CSize size ;
|
||||
|
||||
static BOOL bFirstTime = TRUE;
|
||||
static char rgchAlphabet [54] ;
|
||||
|
||||
if ( bFirstTime )
|
||||
{
|
||||
bFirstTime = false;
|
||||
for ( i = 0 ; i <= 25 ; i++)
|
||||
{
|
||||
rgchAlphabet[i] = (char)(i+(int)'a') ;
|
||||
rgchAlphabet[i+26] = (char)(i+(int)'A') ;
|
||||
}
|
||||
rgchAlphabet[52] = 0x20;
|
||||
rgchAlphabet[53] = 0x20;
|
||||
}
|
||||
|
||||
CFont* pf = ed.GetFont();
|
||||
LOGFONT lf;
|
||||
pf->GetLogFont(&lf);
|
||||
pdc->SelectObject (pf);
|
||||
GetTextExtentPoint32 ( pdc->m_hDC, (LPSTR) rgchAlphabet, 54, & size ) ;
|
||||
|
||||
nAveWidth = size.cx / 54 ;
|
||||
|
||||
if ( size.cx % 54 )
|
||||
{
|
||||
nAveWidth++;
|
||||
}
|
||||
|
||||
nAveHeight = size.cy; //6 * size.cy / 4;
|
||||
|
||||
sizeRet.cx = nAveWidth;
|
||||
sizeRet.cy = nAveHeight; // tm.tmHeight;
|
||||
|
||||
ed.ReleaseDC(pdc);
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
int ProcessYieldMessage ()
|
||||
{
|
||||
|
||||
CWinApp* pApp = AfxGetApp();
|
||||
|
||||
if ( pApp )
|
||||
{
|
||||
MSG msgx;
|
||||
while (::PeekMessage(&msgx, NULL, NULL, NULL, PM_NOREMOVE))
|
||||
try
|
||||
{
|
||||
if (!pApp->PumpMessage())
|
||||
{
|
||||
// ExitProcess(1);
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void print_table_data(MYSQL_RES *result,CString& str,CEdit& ed,LOGFONT& lf)
|
||||
{
|
||||
MYSQL_ROW cur;
|
||||
uint length;
|
||||
MYSQL_FIELD* field;
|
||||
bool* num_flag;
|
||||
my_ulonglong nRows = mysql_num_rows(result);
|
||||
uint nFields = mysql_num_fields(result);
|
||||
int* rgi = new int [nFields];
|
||||
memset ( rgi, 0, nFields*sizeof(int) );
|
||||
num_flag=(bool*) my_alloca(sizeof(bool)*nFields);
|
||||
|
||||
ed.SetLimitText(65535*16);
|
||||
|
||||
CSize sizeFont;
|
||||
CalculateFontSize ( ed, sizeFont );
|
||||
uint index = 0;
|
||||
rgi[index++]=0;
|
||||
CString separator("");
|
||||
|
||||
mysql_field_seek(result,0);
|
||||
|
||||
for (uint off=0; (field = mysql_fetch_field(result)) ; off++)
|
||||
{
|
||||
uint length= (uint) strlen(field->name);
|
||||
length=max(length,field->max_length);
|
||||
if (length < 4 && !IS_NOT_NULL(field->flags))
|
||||
length=4; // Room for "NULL"
|
||||
field->max_length=length+1;
|
||||
int n=length+2;
|
||||
for (uint i=lstrlen(field->name); i-- > 0 ; ) separator+="-";
|
||||
if ( index!= nFields )
|
||||
{
|
||||
int o = rgi[index-1];
|
||||
rgi[index++]=o+((n+1)*sizeFont.cx)/2;
|
||||
}
|
||||
separator+='\t';
|
||||
str += field->name;
|
||||
str += "\t";
|
||||
num_flag[off]= IS_NUM(field->type);
|
||||
}
|
||||
separator += "\r\n";
|
||||
str += "\r\n";
|
||||
str += separator;
|
||||
ed.SetSel(-1,-1);
|
||||
ed.ReplaceSel(str);
|
||||
|
||||
if ( 1 || nRows > 100 )
|
||||
{
|
||||
while ((cur = mysql_fetch_row(result)))
|
||||
{
|
||||
ProcessYieldMessage ();
|
||||
mysql_field_seek(result,0);
|
||||
str.Empty();
|
||||
ed.SetSel(-1,-1);
|
||||
for (uint off=0 ; off < mysql_num_fields(result); off++)
|
||||
{
|
||||
field = mysql_fetch_field(result);
|
||||
length=field->max_length;
|
||||
CString strText;
|
||||
strText.Format ("%s", cur[off] ? (char*) cur[off] : "NULL");
|
||||
str += strText;
|
||||
str += "\t";
|
||||
}
|
||||
str += "\r\n";
|
||||
ed.SetSel(-1,-1);
|
||||
ed.ReplaceSel(str);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while ((cur = mysql_fetch_row(result)))
|
||||
{
|
||||
mysql_field_seek(result,0);
|
||||
for (uint off=0 ; off < mysql_num_fields(result); off++)
|
||||
{
|
||||
field = mysql_fetch_field(result);
|
||||
length=field->max_length;
|
||||
CString strText;
|
||||
strText.Format ("%s", cur[off] ? (char*) cur[off] : "NULL");
|
||||
str += strText;
|
||||
str += "\t";
|
||||
}
|
||||
str += "\r\n";
|
||||
}
|
||||
}
|
||||
my_afree((gptr) num_flag);
|
||||
str += "\r\n";
|
||||
ed.SetTabStops(nFields,rgi);
|
||||
delete [] rgi;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnQueryPb()
|
||||
{
|
||||
|
||||
CWaitCursor x;
|
||||
// mysql_select_db(m_pdb,"mysql");
|
||||
|
||||
if ( m_pResource && m_pResource->GetType() == CResource::eDatabase )
|
||||
{
|
||||
CString strDB = m_pResource->GetDisplayName();
|
||||
strDB.TrimRight();
|
||||
if (mysql_select_db(m_pdb,strDB))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
m_pQuery->UpdateData();
|
||||
m_pResults->m_edit.Empty();
|
||||
CString str = m_pQuery->m_edit;
|
||||
if ( mysql_real_query(m_pdb,str,str.GetLength())==0 )
|
||||
{
|
||||
MYSQL_RES *result;
|
||||
if ((result=mysql_store_result(m_pdb)))
|
||||
{
|
||||
my_ulonglong nRows = mysql_num_rows(result);
|
||||
m_pResults->UpdateData(FALSE);
|
||||
m_tabs.SetCurSel(1);
|
||||
ActivateTab ( 1 );
|
||||
print_table_data(result,m_pResults->m_edit,m_pResults->m_ctl_edit,m_lf);
|
||||
// m_pResults->UpdateData(FALSE);
|
||||
m_pResults->m_ctl_edit.SetSel(-1,-1);
|
||||
CString strText;
|
||||
strText.Format ( "\r\n(%d row(s) affected)\r\n", nRows );
|
||||
m_pResults->m_ctl_edit.ReplaceSel(strText);
|
||||
mysql_free_result(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pResults->m_edit = mysql_error(m_pdb);
|
||||
m_pResults->UpdateData(FALSE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pResults->m_edit = mysql_error(m_pdb);
|
||||
m_pResults->UpdateData(FALSE);
|
||||
}
|
||||
|
||||
m_tabs.SetCurSel(1);
|
||||
ActivateTab ( 1 );
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnQueryDatabases()
|
||||
{
|
||||
CWaitCursor x;
|
||||
MYSQL_RES *result;
|
||||
m_pResults->m_edit.Empty();
|
||||
if ((result=mysql_list_dbs(m_pdb,0)))
|
||||
{
|
||||
my_ulonglong nRows = mysql_num_rows(result);
|
||||
print_table_data(result,m_pResults->m_edit,m_pResults->m_ctl_edit,m_lf);
|
||||
//m_pResults->UpdateData(FALSE);
|
||||
mysql_free_result(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pResults->m_edit = mysql_error(m_pdb);
|
||||
m_pResults->UpdateData(FALSE);
|
||||
}
|
||||
|
||||
m_tabs.SetCurSel(1);
|
||||
ActivateTab ( 1 );
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
ActivateTab ( m_tabs.GetCurSel() );
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnFontPb()
|
||||
{
|
||||
|
||||
CFontDialog FontDlg ( & m_lf );
|
||||
|
||||
if ( FontDlg.DoModal ( ) == IDOK )
|
||||
{
|
||||
if (m_font.GetSafeHandle())
|
||||
m_font.DeleteObject();
|
||||
m_lf = *FontDlg.m_cf.lpLogFont;
|
||||
m_font.CreateFontIndirect(FontDlg.m_cf.lpLogFont);
|
||||
m_pQuery->SetFont(&m_font);
|
||||
m_pResults->SetFont(&m_font);
|
||||
m_pStatus->SetFont(&m_font);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::DoOnSize(UINT nType, int cx, int cy)
|
||||
{
|
||||
|
||||
int nx = cx - ( m_rectDlg[CLIENT_COORDS].Width ( ) - m_rectTab[CLIENT_COORDS].Width ( ) );
|
||||
int ny = cy - ( m_rectDlg[CLIENT_COORDS].Height ( ) - m_rectTab[CLIENT_COORDS].Height ( ) );
|
||||
|
||||
if (IsWindow(m_tabs.GetSafeHwnd()))
|
||||
{
|
||||
m_tabs.SetWindowPos ( NULL
|
||||
, 0
|
||||
, 0
|
||||
, nx
|
||||
, ny
|
||||
, SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW );
|
||||
|
||||
if (m_pResults&&IsWindow(m_pResults->GetSafeHwnd()))
|
||||
m_pResults -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE );
|
||||
if (m_pQuery&&IsWindow(m_pQuery->GetSafeHwnd()))
|
||||
m_pQuery -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE );
|
||||
if (m_pStatus&&IsWindow(m_pStatus->GetSafeHwnd()))
|
||||
m_pStatus -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE );
|
||||
// switch ( m_tabs.GetCurSel() )
|
||||
// {
|
||||
// case 0:
|
||||
// {
|
||||
// if (m_pResults&&IsWindow(m_pResults->GetSafeHwnd()))
|
||||
// m_pResults -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_HIDEWINDOW );
|
||||
// if (m_pQuery&&IsWindow(m_pQuery->GetSafeHwnd()))
|
||||
// m_pQuery -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW );
|
||||
// break;
|
||||
// }
|
||||
// case 1:
|
||||
// {
|
||||
// if (m_pQuery&&IsWindow(m_pQuery->GetSafeHwnd()))
|
||||
// m_pQuery -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_HIDEWINDOW );
|
||||
// if (m_pResults&&IsWindow(m_pResults->GetSafeHwnd()))
|
||||
// m_pResults -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW );
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnSize(UINT nType, int cx, int cy)
|
||||
{
|
||||
|
||||
CDialog::OnSize(nType, cx, cy);
|
||||
|
||||
DoOnSize ( nType, cx, cy );
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnOK()
|
||||
{
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnCancel()
|
||||
{
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
BOOL CToolSql::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
return CDialog::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::DoProcessListQuery()
|
||||
{
|
||||
|
||||
MYSQL_RES *result;
|
||||
if (result=mysql_list_processes(m_pdb))
|
||||
{
|
||||
if (m_bClear)
|
||||
{
|
||||
m_pStatus->m_edit.Empty();
|
||||
m_pStatus->UpdateData(FALSE);
|
||||
}
|
||||
print_table_data(result,m_pStatus->m_edit,m_pStatus->m_ctl_edit,m_lf);
|
||||
mysql_free_result(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
// my_printf_error(0,"process list failed; error: '%s'",MYF(ME_BELL),mysql_error(mysql));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnStartPb()
|
||||
{
|
||||
UpdateData();
|
||||
if (m_ui_timer) return;
|
||||
if (m_nIntervalTimerSeconds<1) return;
|
||||
ActivateTab ( 2 );
|
||||
m_ui_timer = SetTimer( MY_TIMER_ID, m_nIntervalTimerSeconds*1000, NULL );
|
||||
m_ctl_Start . EnableWindow(FALSE);
|
||||
m_ctl_Stop . EnableWindow(TRUE);
|
||||
DoProcessListQuery();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnStopPb()
|
||||
{
|
||||
UpdateData();
|
||||
if (m_ui_timer)
|
||||
{
|
||||
KillTimer(MY_TIMER_ID);
|
||||
m_ui_timer = 0;
|
||||
}
|
||||
m_ctl_Start . EnableWindow(TRUE);
|
||||
m_ctl_Stop . EnableWindow(FALSE);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CToolSql::OnTimer(UINT nIDEvent)
|
||||
{
|
||||
DoProcessListQuery();
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
void CToolSql::OnDestroy()
|
||||
{
|
||||
if (m_ui_timer)
|
||||
{
|
||||
KillTimer(MY_TIMER_ID);
|
||||
m_ui_timer = 0;
|
||||
}
|
||||
CDialog::OnDestroy();
|
||||
}
|
||||
|
||||
void CToolSql::OnClear()
|
||||
{
|
||||
UpdateData();
|
||||
}
|
||||
|
||||
void CToolSql::OnChangeTimerSecs()
|
||||
{
|
||||
UpdateData();
|
||||
}
|
Reference in New Issue
Block a user