📄 catalogdlg.cpp
字号:
// CataLogDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MyInsaneBT.h"
#include "CataLogDlg.h"
#include "NewCataLogDlg.h"
#include "DataBase.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCataLogDlg dialog
CCataLogDlg::CCataLogDlg(CWnd* pParent /*=NULL*/)
: CPropertyPage(CCataLogDlg::IDD)
{
//{{AFX_DATA_INIT(CCataLogDlg)
m_CataBoxEx = NULL;
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CCataLogDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCataLogDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCataLogDlg, CPropertyPage)
//{{AFX_MSG_MAP(CCataLogDlg)
ON_BN_CLICKED(IDC_BUTTON_CA_NEW, OnButtonCaNew)
ON_BN_CLICKED(IDC_BUTTON_SET_PATH, OnButtonSetPath)
ON_CBN_EDITCHANGE(IDC_COMBOBOXEX_CATALOG, OnEditchangeComboboxexCatalog)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_SETNEWTYPE,OnAddNewType)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCataLogDlg message handlers
BOOL CCataLogDlg::OnInitDialog()
{
//下载默认目录
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_DOWN_PATH_DEF);
pEdit->SetWindowText(m_default_Path);
InitComBoxEx();
return TRUE;
}
void CCataLogDlg::GetData(CSetupRegister* pSetupRegister)
{}
void CCataLogDlg::SetData(CSetupRegister *pSetupRegister)
{
//默认目录
m_default_Path = pSetupRegister->m_default_Path;
map<CString,CString>::iterator it = pSetupRegister->m_vecCatalog.begin();
for(;it!=pSetupRegister->m_vecCatalog.end();it++)
{
m_catalog.insert(make_pair(it->first,it->second));
}
}
bool CCataLogDlg::Apply()
{
return true;
}
void CCataLogDlg::Clear()
{
//先删除所有
int count = m_CataBoxEx->GetCount();
for(int i=0;i<=count;i++)
m_CataBoxEx->DeleteItem(0);
if(m_imagelist.GetSafeHandle()!=NULL)
{
m_imagelist.DeleteImageList();
m_imagelist.Detach();
}
}
void CCataLogDlg::InitComBoxEx()
{
m_CataBoxEx = (CTypeComboBox*)GetDlgItem(IDC_COMBOBOXEX_CATALOG);
Clear();
CBitmap bitmap;
BOOL r = bitmap.LoadBitmap(IDB_BITMAP_FLODE);
BITMAP MapInfo;
bitmap.GetBitmap(&MapInfo);
int cx,cy;
cx = MapInfo.bmWidth;
cy = MapInfo.bmHeight;
m_imagelist.Create(cx,cy,ILC_COLOR8|ILC_MASK,16,4);
m_imagelist.Add(&bitmap,RGB(0,0,0));
m_CataBoxEx->SetImageList(&m_imagelist);
int Index = 0;
map<CString,CString>::iterator it = m_catalog.begin();
for(;it!=m_catalog.end();it++)
{
COMBOBOXEXITEM cbei;
cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
cbei.iItem = Index;
cbei.pszText = (LPTSTR)(LPCTSTR)it->first;
cbei.iImage = 0;
cbei.iSelectedImage =0;
m_CataBoxEx->InsertItem(&cbei);
Index++;
}
m_CataBoxEx->SetCurSel(0);
}
//**********************************************************************************
//** 函数名称: CCataLogDlg::OnButtonCaNew
//** 输 入:
//** 输 出:
//** 功能描述: 新建目录类别
//** 作 者: shuyi
//** 创建日期: 2007-7-26
//**************修改记录************************************************************
//** 修 改 者: shuyi
//** 修改日期: 2007-7-26
//** 修改描述:
//** 版 本: V1.0
//**********************************************************************************
void CCataLogDlg::OnButtonCaNew()
{
CNewCataLogDlg Dlg;
Dlg.m_CataDlg = this;
Dlg.DoModal();
}
void CCataLogDlg::OnAddNewType(WPARAM wParam,LPARAM lParam)
{
LPNewType type = (LPNewType)lParam;
CString Name = type->TypeName;
CString Path = type->Path;
//判断该类别是否存在
map<CString,CString>::iterator it = m_catalog.find(Name);
if(it==m_catalog.end())
{
m_catalog.insert(it,make_pair(Name,Path));
InitComBoxEx();
//保存到数据库
//Path = Path+Name;
SaveType(Name,Path);
}
else
{
AfxMessageBox("该类别已存在,请重新设置");
}
}
void CCataLogDlg::SaveType(CString Name,CString Path)
{
CString strConnect =CDataBase::Instance()->m_Connstring;
//连接数据库
if(!CDataBase::Instance()->Opendb(strConnect))
{
AfxMessageBox("连接数据库失败");
return;
}
//获得代理信息
CString SQL = "SELECT * FROM catalogtab";
//判断该纪录是否存在
if(!Is_Path_Record(Name.GetBuffer(0)))
{
//该纪录已经存在
return;
}
CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
if(!pRs->Open((LPCTSTR)SQL))
return;
pRs->AddNew(); //添加一条空纪录
pRs->SetFieldValue("Name",Name);
pRs->SetFieldValue("catalog",Path);
pRs->Update();
pRs->Close();
}
void CCataLogDlg::OnButtonSetPath()
{
BROWSEINFO bi; //BROWSEINFO结构体
TCHAR Buffer[512]="";
TCHAR FullPath[512]="";
bi.hwndOwner = m_hWnd; //m_hWnd你的程序主窗口
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer; //返回选择的目录名的缓冲区
bi.lpszTitle = "新建类别路径"; //弹出的窗口的文字提示
bi.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_BROWSEFORCOMPUTER ; //只返回目录。其他标志看MSDN
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
ITEMIDLIST* pidl = ::SHBrowseForFolder(&bi); //显示弹出窗口,ITEMIDLIST很重要
if(::SHGetPathFromIDList(pidl,FullPath)) //在ITEMIDLIST中得到目录名的整个路径
{
//成功
CString FsPath = FullPath;
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_DOWN_PATH_DEF);
pEdit->SetWindowText(FsPath);
}
}
//判断下载路局是否存在数据库中
bool CCataLogDlg::Is_Path_Record(const char* name)
{
CString sUrl = name;
CString strConnect =CDataBase::Instance()->m_Connstring;
//连接数据库
if(!CDataBase::Instance()->Opendb(strConnect))
{
AfxMessageBox("连接数据库失败");
return false;
}
//获得代理信息
CString SQL;
SQL.Format("SELECT * FROM catalogtab WHERE Name =\"%s\"",sUrl);
CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
if(!pRs->Open((LPCTSTR)SQL))
return false;
if(pRs->IsEof())
return true;
return false;
}
void CCataLogDlg::OnEditchangeComboboxexCatalog()
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -