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

📄 dialogs.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
			{
				::GetCurrentDirectory(MAX_PATH, szTemp );
				lpszPath = szTemp;
			}
			// WParam is TRUE since you are passing a path.
			// It would be FALSE if you were passing a pidl.
			::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,
				(LPARAM)lpszPath);
			break;
		}
	case BFFM_SELCHANGED:
		{
			char szSelection[MAX_PATH];
			if(!::SHGetPathFromIDList((LPITEMIDLIST)lParam, szSelection) ||
				szSelection[1]!=':')
			{
				szSelection[0] = '\0';
				::SendMessage(hwnd, BFFM_ENABLEOK, 0, FALSE);
			}
			else
			{
				::SendMessage(hwnd, BFFM_ENABLEOK, 0, TRUE);
			}
			::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szSelection);
			::SetWindowText(::GetDlgItem(hwnd, PATHDLG_IDC_NEW_EDIT_PATH), szSelection);
			break;
		}
	default:
		break;
	}
	return 0;
}



int CPathDialog::DoModal() 
{

	/////////////////////////////////////////////////////////
	TCHAR szPathTemp[MAX_PATH];
    m_bi.lpfn = BrowseCallbackProc;  // address of callback function
    m_bi.lParam = (LPARAM)this;      // pass address of object to callback function
	m_bi.pszDisplayName = szPathTemp;

	LPITEMIDLIST pidl;
	LPMALLOC pMalloc;

	int iResult=-1;
	if(SUCCEEDED(SHGetMalloc(&pMalloc)))
	{
//		if((m_pParentWnd!=NULL) && m_pParentWnd->IsWindowEnabled())
//		{
//		  m_pParentWnd->EnableWindow(FALSE);
//		  m_bParentDisabled = TRUE;
//		}
		m_bGetSuccess = FALSE;
		pidl = SHBrowseForFolder(&m_bi);
		if (pidl!=NULL) 
		{
			//not need do this because OnOK function did
			//bSucceeded = SHGetPathFromIDList(pidl, m_szPathName);
			// In C++: 
			pMalloc->Free(pidl);
			//In C:
			//pMalloc->lpVtbl->Free(pMalloc,pidl);
			//pMalloc->lpVtbl->Release(pMalloc);
		}
		if(m_bGetSuccess)
		{
			iResult = IDOK;
		}
		pMalloc->Release();
	}

    if(m_bParentDisabled && (m_pParentWnd!=NULL))
	{
		m_pParentWnd->EnableWindow(TRUE);
	}
    m_bParentDisabled=FALSE;

	return iResult;
}

BOOL CPathDialog::IsFileNameValid(LPCTSTR lpFileName)
{
	if(lpFileName==NULL)
	{
		return FALSE;
	}

	int nLen = _tcslen(lpFileName);
	if(nLen<=0)
	{
		return FALSE;
	}

	//check first char
	switch(lpFileName[0])
	{
	case _T('.'):
	case _T(' '):
	case _T('\t'):
		return FALSE;
	}

	//check last char
	switch(lpFileName[nLen-1])
	{
	case _T('.'):
	case _T(' '):
	case _T('\t'):
		return FALSE;
	}

	//check all
	int i=0;
	while(lpFileName[i]!=0)
	{
		switch(lpFileName[i])
		{
		case _T('\\'):
		case _T('/'):
		case _T(':'):
		case _T('*'):
		case _T('?'):
		case _T('\"'):
		case _T('<'):
		case _T('>'):
		case _T('|'):
			return FALSE;
		}
		i++;
	}


	return TRUE;
}

/*
const TCHAR c_FolderDoesNotExist[] = _T(
		"The folder:\n\n"
		"%s\n\n"
		"does not exist. Do you want the folder to be created?");
const TCHAR c_szErrInvalidPath[] = _T(
		"The folder:"
		"\n\n"
		"%s\n\n"
		"is invalid. Please reenter.");
const TCHAR c_szErrCreatePath[] = _T(
		"The folder:"
		"\n\n"
		"%s"
		"\n\ncan not be created. Please double check.");
*/

//return -1: user break;
//return 0: no error
//return 1: lpPath is invalid
//return 2: can not create lpPath
int CPathDialog::MakeSurePathExists(LPCTSTR lpPath)
{
	CString	strPathLocal	=	"";
	if( lpPath )
		strPathLocal	=	lpPath;
	int	nLen	=	strPathLocal.GetLength();
	if( nLen > 0 && (strPathLocal[nLen-1] == '\\' || strPathLocal[nLen-1] == '/') )
		strPathLocal	=	strPathLocal.Left( nLen-1 );

	CString strMsg, strMsgFmt;
	int iRet;
	try
	{
		//validate path
		iRet=Touch(strPathLocal, TRUE);
		if(iRet!=0)
		{
			throw iRet;
		}

		if(_taccess(strPathLocal, 0)==0)
		{
			return (int)0;
		}

		strMsgFmt	=	AfxModuleLoadString( IDS_XFPATHDLG_FOLDERNOTEXIST );
		strMsg.Format(strMsgFmt, lpPath);
		if(AfxMessageBox(strMsg, MB_YESNO|MB_ICONQUESTION) != IDYES)
		{
			return (int)-1;
		}

		//create path
		iRet=Touch(strPathLocal, FALSE);
		if(iRet!=0)
		{
			throw iRet; 
		}

		return 0;
	}
	catch(int nErrCode)
	{
		switch(nErrCode)
		{
		case 1:
			strMsgFmt	=	AfxModuleLoadString( IDS_XFPATHDLG_ERRINVALIDPATH );
			break;
		case 2:
		default:
			strMsgFmt	=	AfxModuleLoadString( IDS_XFPATHDLG_ERRCREATEPATH );
			break;
		}
		strMsg.Format(strMsgFmt, lpPath);
		AfxMessageBox(strMsg, MB_OK|MB_ICONEXCLAMATION);
	}

	return iRet;
}

//return 0: no error
//return 1: lpPath is invalid
//return 2: lpPath can not be created(bValidate==FALSE)
int CPathDialog::Touch(LPCTSTR lpPath, BOOL bValidate)
{
	if(lpPath==NULL)
	{
		return 1;
	}

	TCHAR szPath[MAX_PATH];
	_tcscpy(szPath, lpPath);
	int nLen = _tcslen(szPath);

	//path must be "x:\..."
	if( ( nLen<3 ) || 
		( ( szPath[0]<_T('A') || _T('Z')<szPath[0] ) && 
		  ( szPath[0]<_T('a') || _T('z')<szPath[0] ) ||
		( szPath[1]!=_T(':') )|| 
		( szPath[2]!=_T('\\') )
		)
	  )
	{
		return 1;
	}

	int i;
	if(nLen==3)
	{
		if(!bValidate)
		{
			if(_access(szPath, 0)!=0)
			{
				return 2;
			}
		}
		return 0;
	}

	i = 3;
	BOOL bLastOne=TRUE;
	LPTSTR lpCurrentName;
	while(szPath[i]!=0)
	{
		lpCurrentName = &szPath[i];
		while( (szPath[i]!=0) && (szPath[i]!=_T('\\')) )
		{
			i++;
		}

		bLastOne =(szPath[i]==0);
		szPath[i] = 0;

		if( !IsFileNameValid(lpCurrentName) )
		{
			return 1;
		}

		if(!bValidate)
		{
			CreateDirectory(szPath, NULL);
			if(_taccess(szPath, 0)!=0)
			{
				return 2;
			}
		}

		if(bLastOne)
		{
			break; //it's done
		}
		else
		{
			szPath[i] = _T('\\');
		}

		i++;
	}

	return (bLastOne?0:1);
}

//return 0: ok
//return 1: error
int CPathDialog::ConcatPath(LPTSTR lpRoot, LPCTSTR lpMorePath)
{
	if(lpRoot==NULL)
	{
		return 1;
	}

	int nLen = _tcslen(lpRoot);

	if(nLen<3)
	{
		return 1;
	}

	if(lpMorePath==NULL)
	{
		return 0;
	}

	if(nLen==3)
	{
		_tcscat(lpRoot, lpMorePath);
		return 0;
	}

	_tcscat(lpRoot, _T("\\"));
	_tcscat(lpRoot, lpMorePath);

	return 0;
}

/////////////////////////////////////////////////////////////////////////////
// CStringDialog dialog

CStringDialog::CStringDialog(CWnd* pParent /*=NULL*/, UINT nIDTitle, UINT nIDDescript,
				LPCTSTR lpszInitValue )
	: CXFResDialog(CStringDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStringDialog)
	m_strWant = _T("");
	m_strDescript = _T("");
	//}}AFX_DATA_INIT

	m_nIDTitle		=	nIDTitle;
	m_nIDDescript	=	nIDDescript;
	if( lpszInitValue )
		m_strWant		=	lpszInitValue;
}

CString CStringDialog::GetStringWant( )
{
	return	m_strWant;
}

void CStringDialog::DoDataExchange(CDataExchange* pDX)
{
	CXFResDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStringDialog)
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDC_XFEDITWANT, m_editWant);
	DDX_Text(pDX, IDC_XFEDITWANT, m_strWant);
	DDX_Text(pDX, IDC_XFDESCRIPT, m_strDescript);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CStringDialog, CXFResDialog)
	//{{AFX_MSG_MAP(CStringDialog)
	ON_EN_CHANGE(IDC_XFEDITWANT, OnChangeEditwant)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStringDialog message handlers

BOOL CStringDialog::OnInitDialog() 
{
	CXFResDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CString	strTitle, strDescript;
	strTitle	=	AfxModuleLoadString( m_nIDTitle );
	strDescript	=	AfxModuleLoadString( m_nIDDescript );
	if( strTitle.GetLength() > 0 )
		SetWindowText( strTitle );
	if( strDescript.GetLength() > 0 )
		m_strDescript	=	strDescript;

	UpdateData( FALSE );

	m_btnOK.EnableWindow( m_strWant.GetLength() > 0 );
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStringDialog::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData( );

	m_strWant.TrimLeft();
	m_strWant.TrimRight();

	if( m_strWant.GetLength() <= 0 )
		CXFResDialog::OnCancel();
	else
		CXFResDialog::OnOK();
}

void CStringDialog::OnChangeEditwant() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CXFResDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	CString	rString;
	m_editWant.GetWindowText( rString );
	rString.TrimLeft();
	rString.TrimRight();
	m_btnOK.EnableWindow( rString.GetLength() > 0 );
}


⌨️ 快捷键说明

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