www.gusucode.com > 一个VC++语法分析模块程序实例源码程序 > 一个VC++语法分析模块程序实例/CompileSys/CompileSys/IDE/SetDlg.cpp

    // SetDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ide.h"
#include "SetDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSetDlg dialog


CSetDlg::CSetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSetDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetDlg)
	m_strCompileProgName = _T("PL.exe");
	//}}AFX_DATA_INIT
	m_bitmapOk.LoadBitmap(IDB_OK);
	m_bitmapCancel.LoadBitmap(IDB_CANCEL);

	m_hIcon=AfxGetApp()->LoadIcon(IDI_SET);
}


void CSetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetDlg)
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Text(pDX, IDC_EDIT_COMPILEPROG, m_strCompileProgName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetDlg, CDialog)
	//{{AFX_MSG_MAP(CSetDlg)
	ON_BN_CLICKED(IDC_BTN_BROWSE, OnBtnBrowse)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetDlg message handlers

void CSetDlg::OnBtnBrowse() 
{
	// TODO: Add your control notification handler code here
	CFileDialog fileDlg(0,0,0,0,"可执行文件(*.exe)|*.exe|",this);

	if(fileDlg.DoModal()!=IDOK)
		return;

	m_strCompileProgName=fileDlg.GetPathName();

	UpdateData(0);
}

BOOL CSetDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	SetIcon(m_hIcon,1);

	m_btnOK.SetBitmap(m_bitmapOk);
	m_btnCancel.SetBitmap(m_bitmapCancel);

	m_strCompileProgNameBU=m_strCompileProgName;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSetDlg::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(1);
	
	if(GetFileAttributes(m_strCompileProgName)==-1)
	{
		MessageBox("分析器不存在,请重新输入其路径","提示",MB_ICONWARNING);
		m_strCompileProgName=m_strCompileProgNameBU;
		return;
	}

	CDialog::OnOK();
}