home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2000 April
/
VPR0004A.BIN
/
OLS
/
SADKT100
/
sadkt100.lzh
/
SrcFiles.lzh
/
UEEditPage.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1999-12-31
|
5KB
|
218 lines
// UEEditPage.cpp : インプリメンテーション ファイル
//
#include "stdafx.h"
#include "AD_Files.h"
#include "resource.h"
#include "CommandSink.h"
#include "UEEditPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUEEditPage プロパティ ページ
IMPLEMENT_DYNCREATE(CUEEditPage, CPropertyPage)
CUEEditPage::CUEEditPage() : CPropertyPage(CUEEditPage::IDD)
{
//{{AFX_DATA_INIT(CUEEditPage)
m_csUEExt = _T("");
//}}AFX_DATA_INIT
m_pSink=NULL;
}
CUEEditPage::~CUEEditPage()
{
}
void CUEEditPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUEEditPage)
DDX_Text(pDX, IDC_EDT_UEEXT, m_csUEExt);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUEEditPage, CPropertyPage)
//{{AFX_MSG_MAP(CUEEditPage)
ON_BN_CLICKED(IDC_B_ADDDIR, OnBAdddir)
ON_BN_CLICKED(IDC_B_RMVDIR, OnBRmvdir)
ON_BN_CLICKED(IDC_B_ADDEXT, OnBAddext)
ON_BN_CLICKED(IDC_B_RMVEXT, OnBRmvext)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUEEditPage メッセージ ハンドラ
void CUEEditPage::SetSinkPointer(CCommandSink *pSink)
{
m_pSink=pSink;
copy(m_pSink->m_sltUEDir.begin(), m_pSink->m_sltUEDir.end(),
inserter(m_sltDir, m_sltDir.begin()));
copy(m_pSink->m_sltUEExt.begin(), m_pSink->m_sltUEExt.end(),
inserter(m_sltExt, m_sltExt.begin()));
}
BOOL CUEEditPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: この位置に初期化の補足処理を追加してください
if(m_pSink==NULL) return TRUE;
CListBox *pLT=(CListBox*)GetDlgItem(IDC_LT_UEDIR);
list<CString>::iterator p=m_sltDir.begin();
for( ; p!=m_sltDir.end(); p++)
pLT->AddString(*p);
pLT=(CListBox*)GetDlgItem(IDC_LT_UEEXT);
p=m_sltExt.begin();
for( ; p!=m_sltExt.end(); p++)
pLT->AddString(*p);
return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
// 例外: OCX プロパティ ページの戻り値は FALSE となります
}
void CUEEditPage::OnBAdddir()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
char szFilter[]=_T("ALL Files(*.*)|*.*||");
DWORD dwFlags=(OFN_HIDEREADONLY | OFN_NOCHANGEDIR);
CFileDialog FileDlg(TRUE,
NULL,
NULL,
dwFlags,
szFilter,
NULL);
FileDlg.m_ofn.lpstrTitle=_T("編集禁止にするディレクトリのファイルをどれでもひとつ");
if(IDOK!=FileDlg.DoModal())
return;
CString csFile=FileDlg.GetPathName();
int nPos=csFile.ReverseFind(_T('\\'));
if(nPos==-1) return;
csFile=csFile.Left(nPos+1);
list<CString>::iterator p=m_sltDir.begin();
for(; p!=m_sltDir.end(); p++){
if(!csFile.CompareNoCase(*p)){
break;
}
}
if(p!=m_sltDir.end()){
csFile +=_T("\nこのディレクトリはすでに登録されています。");
MessageBox(csFile, _T("ディレクトリの追加"), MB_OK);
return;
}
m_sltDir.push_back(csFile);
CListBox *pLT=(CListBox*)GetDlgItem(IDC_LT_UEDIR);
pLT->AddString(csFile);
}
void CUEEditPage::OnBRmvdir()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CListBox *pLT=(CListBox*)GetDlgItem(IDC_LT_UEDIR);
int nIndex=pLT->GetCurSel();
if(nIndex==LB_ERR){
MessageBox(_T("解除するディレクトリリストで選択して実行してください。"), _T("編集禁止の解除"), MB_OK);
return;
}
CString csItem;
pLT->GetText(nIndex, csItem);
pLT->DeleteString(nIndex);
m_sltDir.remove(csItem);
}
void CUEEditPage::OnBAddext()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
UpdateData(FALSE);
if(m_csUEExt.IsEmpty()){
MessageBox(_T("追加する拡張子を入力して実行してください。"), _T("拡張子の追加"), MB_OK);
return;
}
m_csUEExt.TrimLeft();
m_csUEExt.TrimRight();
list<CString>::iterator p=m_sltExt.begin();
for(; p!=m_sltExt.end(); p++){
if(!m_csUEExt.CompareNoCase(*p)){
break;
}
}
if(p!=m_sltExt.end()){
CString csMsg=m_csUEExt;
csMsg +=_T("\nこの拡張子はすでに登録されています。");
MessageBox(csMsg, _T("拡張子の追加"), MB_OK);
return;
}
m_sltExt.push_back(m_csUEExt);
CListBox *pLT=(CListBox*)GetDlgItem(IDC_LT_UEEXT);
pLT->AddString(m_csUEExt);
}
void CUEEditPage::OnBRmvext()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CListBox *pLT=(CListBox*)GetDlgItem(IDC_LT_UEEXT);
int nIndex=pLT->GetCurSel();
if(nIndex==LB_ERR){
MessageBox(_T("解除する拡張子を選択して実行してください。"), _T("編集禁止の解除"), MB_OK);
return;
}
CString csItem;
pLT->GetText(nIndex, csItem);
pLT->DeleteString(nIndex);
m_sltExt.remove(csItem);
}
BOOL IsSameStringList(list<CString> *psltA, list<CString> *psltB)
{
list<CString>::iterator p=psltA->begin();
list<CString>::iterator q=psltB->begin();
for(; p!=psltA->end() && q!=psltB->end(); p++, q++){
if(p->CompareNoCase(*q))
return FALSE;
}
if(p==psltA->end() && q==psltB->end())
return TRUE;
else
return FALSE;
}