📄 favdialog.cpp
字号:
// FavDialog.cpp : implementation file
//
#include "stdafx.h"
#include "SuperWorld.h"
#include "FavDialog.h"
#include "AddGroupDlg.h"
#include "AddMemberDlg.h"
#include "FavProperty.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFavDialog dialog
CFavDialog::CFavDialog(CWnd* pParent /*=NULL*/)
: CDialog(CFavDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CFavDialog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CFavDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFavDialog)
DDX_Control(pDX, IDC_LIST_MEMBER, m_list_member);
DDX_Control(pDX, IDC_LIST_GROUP, m_list_group);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFavDialog, CDialog)
//{{AFX_MSG_MAP(CFavDialog)
ON_BN_CLICKED(IDC_BUTTON_ADDGROUP, OnButtonAddgroup)
ON_BN_CLICKED(IDC_BUTTON_DELGROUP, OnButtonDelgroup)
ON_BN_CLICKED(IDC_BUTTON_ADDMEMBER, OnButtonAddmember)
ON_BN_CLICKED(IDC_BUTTON_ICON, OnButtonIcon)
ON_BN_CLICKED(IDC_BUTTON_LIST, OnButtonList)
ON_WM_DESTROY()
ON_LBN_SELCHANGE(IDC_LIST_GROUP, OnSelchangeListGroup)
ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_MEMBER, OnDblclkListMember)
ON_BN_CLICKED(IDC_BUTTON_DELMEMBER, OnButtonDelmember)
ON_BN_CLICKED(IDC_BUTTON_PROPERTY, OnButtonProperty)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFavDialog message handlers
BOOL CFavDialog::OnInitDialog()
{
CDialog::OnInitDialog();
/* COLORREF b=::GetSysColor(COLOR_MENU);
int red = GetRValue(b);
int greed = GetGValue(b);
int blue = GetBValue(b);
*/
m_btnProperty.SubclassDlgItem(IDC_BUTTON_PROPERTY, this);
m_btnProperty.SetIcon(IDI_PRO);
m_btnAddGroup.SubclassDlgItem(IDC_BUTTON_ADDGROUP, this);
m_btnAddGroup.SetIcon(IDI_ADDGROUP);
m_btnAddMember.SubclassDlgItem(IDC_BUTTON_ADDMEMBER, this);
m_btnAddMember.SetIcon(IDI_ADDMEMBER);
m_btnDelGroup.SubclassDlgItem(IDC_BUTTON_DELGROUP, this);
m_btnDelGroup.SetIcon(IDI_DELGROUP);
m_btnDelMember.SubclassDlgItem(IDC_BUTTON_DELMEMBER, this);
m_btnDelMember.SetIcon(IDI_DELMEMBER);
m_btnIcon.SubclassDlgItem(IDC_BUTTON_ICON, this);
m_btnIcon.SetIcon(IDI_ICON);
m_btnList.SubclassDlgItem(IDC_BUTTON_LIST, this);
m_btnList.SetIcon(IDI_LIST);
m_btnBrowse.SubclassDlgItem(IDC_BUTTON_BROWSE, this);
m_btnBrowse.SetIcon(IDI_BROWSE);
// Create the image list
m_ImageList.Create(IDB_LIST,16,1,RGB(255,0,255));
m_list_member.SetImageList(&m_ImageList,LVSIL_NORMAL);
m_list_member.SetImageList(&m_ImageList,LVSIL_SMALL);
m_pDB=NULL;
OpenDatabase();
RefreshData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFavDialog::OnButtonAddgroup()
{
CAddGroupDlg dlg;
CSuperWorldApp *pApp = (CSuperWorldApp *)AfxGetApp();
if(dlg.DoModal()==IDOK)
{
CString szTemp;
szTemp.Empty();
szTemp = "◆ ";
szTemp += pApp->m_szGroupName;
m_list_group.AddString(szTemp);
}
}
void CFavDialog::OnButtonDelgroup()
{
int iSel=m_list_group.GetCurSel();
if(iSel==LB_ERR)
{
MessageBox("请选择您所要删除的组...","提示",MB_OK|MB_ICONQUESTION);
return;
}
int iRes=MessageBox("您真的要删除组及组中所有的成员?","提示",MB_YESNO|MB_ICONQUESTION);
if(iRes==IDYES)
{
CString szGroup;
szGroup.Empty();
int iSel=m_list_group.GetCurSel();
m_list_group.GetText(iSel,szGroup);
m_dataRecset->MoveFirst();
CString szTemp;
szTemp.Empty();
szTemp = szGroup.Mid(3);
szGroup.Empty();
szGroup = szTemp;
while(!m_dataRecset->IsEOF())
{
if(m_dataRecset->m_groupname.Find(szGroup)!=-1)
{
if(m_dataRecset->CanUpdate())
m_dataRecset->Delete();
}
m_dataRecset->MoveNext();
}
m_list_member.DeleteAllItems();
m_list_group.DeleteString(iSel);
}
}
void CFavDialog::OnButtonAddmember()
{
int iSel=m_list_group.GetCurSel();
if(iSel==LB_ERR)
{
MessageBox("请选择成员所在的组...","提示",MB_OK|MB_ICONQUESTION);
return;
}
CSuperWorldApp *pApp = (CSuperWorldApp *)AfxGetApp();
CAddMemberDlg dlg;
if(IDOK==dlg.DoModal())
{
LV_ITEM lvitem;
TCHAR szText[MAX_PATH]={0};
lstrcpy(szText,pApp->m_szNetName);
lvitem.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
lvitem.iItem=0;
lvitem.iSubItem=0;
lvitem.pszText=szText;
lvitem.iImage=0;
lvitem.lParam=0;
m_list_member.InsertItem(&lvitem);//返回表项插入后的索引号
//save item
SaveMemberToFile();
}
}
void CFavDialog::OnButtonIcon()
{
LONG lStyle;
lStyle=GetWindowLong(m_list_member.m_hWnd,GWL_STYLE);//获取当前窗口类型
lStyle&=~LVS_TYPEMASK; //清除显示方式位
lStyle|=LVS_ICON; //设置显示方式
SetWindowLong(m_list_member.m_hWnd,GWL_STYLE,lStyle);//设置窗口类型
}
void CFavDialog::OnButtonList()
{
LONG lStyle;
lStyle=GetWindowLong(m_list_member.m_hWnd,GWL_STYLE);//获取当前窗口类型
lStyle&=~LVS_TYPEMASK; //清除显示方式位
lStyle|=LVS_LIST; //设置显示方式
SetWindowLong(m_list_member.m_hWnd,GWL_STYLE,lStyle);//设置窗口类型
}
int CFavDialog::openDatabase(CDatabase **ppDatabase, CString fileName,
BOOL bReportNoOpen /* = TRUE */)
{
// initialize success indicator
int nReturnCode = 1;
// close and delete if necessary
if (*ppDatabase != NULL)
{
if ((*ppDatabase)->IsOpen())
closeDatabase(ppDatabase);
delete *ppDatabase;
}
// construct new database
*ppDatabase = new CDatabase;
// failed to allocate
if (ppDatabase == NULL)
return -1; // fatal error
// now open the database object with error checking
try
{
(*ppDatabase)->Open(fileName,FALSE,FALSE,"ODBC;");
}
catch (CDBException *e)
{
AfxMessageBox(e->m_strError);
// not rethrowing, so delete exception
e->Delete();
delete *ppDatabase;
*ppDatabase = NULL;
}
catch (CMemoryException *e)
{
// output status
AfxMessageBox(_T("Failed to open database--Memory exception thrown."));
// not rethrowing, so delete exception
e->Delete();
delete *ppDatabase;
*ppDatabase = NULL;
// indicate fatal error
nReturnCode = -1;
}
return nReturnCode;
}
void CFavDialog::closeDatabase(CDatabase **ppDatabase)
{
// only process if the database object exists
if (*ppDatabase != NULL)
{
if ((*ppDatabase)->IsOpen())
(*ppDatabase)->Close();
// closing doesn't delete the object
delete *ppDatabase;
*ppDatabase = NULL;
}
}
void CFavDialog::OpenInitDatabase(CString szDatabase)
{
openDatabase(&m_pDB,szDatabase,TRUE);
try
{
m_dataRecset = new CPageFavSet(m_pDB);
m_dataRecset->Open (CRecordset::snapshot,"Select * from PageFav");
}
catch(CException* e)
{
e->ReportError ();
e->Delete ();
if(m_dataRecset != NULL)
{
if(m_dataRecset->IsOpen ())
m_dataRecset->Close ();
delete m_dataRecset;
m_dataRecset = NULL;
}
closeDatabase(&m_pDB);
}
}
BOOL CFavDialog::InitODBCEnvironment(char *szPathName)
{
TCHAR szDesc[2048];
LPCSTR lpszDriver;
HMODULE hmodule;
int nLen;
int ch='\\';
CString szTemp,szTemp1;
szTemp.Empty();
szTemp1.Empty();
szTemp = szPathName;
int result = szTemp.ReverseFind(ch);
szTemp1 = szTemp.Left(result);
// check if the driver is install and construct the create description string
if (hmodule = ::LoadLibrary(_T("odbcjt32.dll")))
{
_stprintf(szDesc, _T("DSN=%s+ DESCRIPTION=%s+ DBQ=%s+ DEFAULTDIR=%s++ "),
PAGENAME, PAGENAME, szPathName, szTemp1);
lpszDriver = "Microsoft Access Driver (*.mdb)\0";
::FreeLibrary(hmodule);
}
else
{
::MessageBox(NULL, _T("找不到ODBC驱动程序,请安装\nMicrosoft Access Driver"),
_T("错误信息"), MB_OK | MB_ICONERROR);
return FALSE;
}
nLen = _tcslen(szDesc);
for (int i=0; i<nLen; i++)
{
if (szDesc[i] == _T('+'))
szDesc[i] = 0;
}
// create the odbc data source
if (!::SQLConfigDataSource(NULL, ODBC_ADD_DSN, lpszDriver, (LPCSTR)szDesc))
{
::MessageBox(NULL, _T("创建ODBC数据源失败"), _T("错误信息"), MB_OK | MB_ICONERROR);
return FALSE;
}
return TRUE;
}
BOOL CFavDialog::CloseODBCEnvironment(char *szPathName)
{
TCHAR szDesc[MAX_PATH];
LPCSTR lpszDriver;
int nLen, i;
int ch='\\';
CString szTemp,szTemp1;
szTemp.Empty();
szTemp1.Empty();
szTemp = szPathName;
int result = szTemp.ReverseFind(ch);
szTemp1 = szTemp.Left(result);
_stprintf(szDesc, _T("DSN=%s+ DESCRIPTION=%s+ DBQ=%s++ "), PAGENAME, PAGENAME,szTemp1);
lpszDriver = "Microsoft Access Driver (*.mdb)\0";
nLen = _tcslen(szDesc);
for (i=0; i<nLen; i++)
{
if (szDesc[i] == _T('+'))
szDesc[i] = 0;
}
BOOL bRes=::SQLConfigDataSource(NULL, ODBC_REMOVE_DSN, lpszDriver, (LPCSTR)szDesc);
if(!bRes)
return FALSE;
return TRUE;
}
void CFavDialog::OpenDatabase()
{
TCHAR szTempPath[1024];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -