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

📄 bindirdialog.cpp

📁 eCos1.31版
💻 CPP
字号:
//####COPYRIGHTBEGIN####//                                                                          // ----------------------------------------------------------------------------// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.//// This program is part of the eCos host tools.//// This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License, or (at your option) // any later version.// // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for // more details.// // You should have received a copy of the GNU General Public License along with// this program; if not, write to the Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.//// ----------------------------------------------------------------------------//                                                                          //####COPYRIGHTEND####// BinDirDialog.cpp : implementation file//#include "stdafx.h"#include "ConfigTool.h"#include "configtooldoc.h"#include "BinDirDialog.h"#include "ConfigItem.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CBinDirDialog dialogCBinDirDialog::CBinDirDialog(const CStringArray &arstrPaths, const CString &strDefault)	: CFolderDialog(FALSE, CBinDirDialog::IDD), m_arstrPaths(arstrPaths), m_strDefault(strDefault){	//{{AFX_DATA_INIT(CBinDirDialog)		// NOTE: the ClassWizard will add member initialization here	//}}AFX_DATA_INIT	m_strFolder = _T(""); // Internationalization OK}void CBinDirDialog::DoDataExchange(CDataExchange* pDX){	CFolderDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(CBinDirDialog)		// NOTE: the ClassWizard will add DDX and DDV calls here	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CBinDirDialog, CFolderDialog)	//{{AFX_MSG_MAP(CBinDirDialog)	ON_CBN_EDITCHANGE(IDC_FOLDER, OnEditchangeFolder)	ON_CBN_SELCHANGE(IDC_FOLDER, OnSelchangeFolder)	ON_BN_CLICKED(IDC_FOLDER_DIALOG_BROWSE, OnBrowse)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CBinDirDialog message handlersBOOL CBinDirDialog::OnInitDialog() {	CComboBox *pCombo=(CComboBox *)GetDlgItem(IDC_FOLDER);	CFolderDialog::OnInitDialog();	CDC *pDC=GetDC();	CFont *pOldFont=pDC->SelectObject(CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT)));	int nMaxTextLength=0;	for(int i=0;i<m_arstrPaths.GetSize();i++){		const CFileName &str=m_arstrPaths[i];		for(int j=i+1;j<m_arstrPaths.GetSize();j++){			const CFileName &ostr=m_arstrPaths[j];			if(ostr.SameFile(str)){				goto Next;			}		}		if(str.IsDir()&&pCombo->FindString(-1,str)<0){			pCombo->AddString(str);			nMaxTextLength=max(nMaxTextLength,pDC->GetTextExtent(str).cx);		}		Next:;	}	pDC->SelectObject(pOldFont);	ReleaseDC(pDC);	CRect rcClient;	pCombo->GetClientRect(rcClient);	int nExpand=nMaxTextLength-(rcClient.Width()-GetSystemMetrics(SM_CXVSCROLL)-2*GetSystemMetrics(SM_CXBORDER)-5);	if(nExpand>0){		static const UINT arids[]={IDC_STATIC_DESC, IDOK,IDCANCEL,IDC_FOLDER_DIALOG_BROWSE,IDC_FOLDER};		CRect rect;		for(int i=0;i<sizeof arids/sizeof arids[0];i++){			UINT id=arids[i];			GetDlgItem(id)->GetWindowRect(rect);			ScreenToClient(rect);			if(IDC_FOLDER!=id && IDC_STATIC_DESC!=id){				rect.left+=nExpand;			}			rect.right+=nExpand;			GetDlgItem(id)->MoveWindow(rect);		}		GetWindowRect(rect);		rect.right+=nExpand;		MoveWindow(rect);	}	GetDlgItem(IDOK)->EnableWindow(!m_strFolder.IsEmpty());	for(i=pCombo->GetCount()-1;i>=0;--i){		CFileName str;		pCombo->GetLBText(i,str);		if(str.SameFile(m_strDefault)){			pCombo->SetCurSel(i);			GetDlgItem(IDOK)->EnableWindow(TRUE);		}	}	return FALSE;  // return TRUE unless you set the focus to a control	              // EXCEPTION: OCX Property Pages should return FALSE}void CBinDirDialog::OnEditchangeFolder() {	CString str;	GetDlgItemText(IDC_FOLDER,str);	GetDlgItem(IDOK)->EnableWindow(!str.IsEmpty());}void CBinDirDialog::OnSelchangeFolder() {	GetDlgItem(IDOK)->EnableWindow(-1!=((CComboBox *)GetDlgItem(IDC_FOLDER))->GetCurSel());}void CBinDirDialog::OnBrowse() {	CString str;	CFolderDialog::OnBrowse();	GetDlgItemText(IDC_FOLDER,str);	GetDlgItem(IDOK)->EnableWindow(!str.IsEmpty());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -