⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 favdialog.cpp

📁 一个操作系统源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -