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

📄 newdlg.cpp

📁 与vc++界面十分类似的词法分析器
💻 CPP
字号:
// NewDlg.cpp : implementation file
//

#include "stdafx.h"
#include "cff.h"
#include "NewDlg.h"
#include "ChooseDirDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CNewDlg dialog


CNewDlg::CNewDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNewDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNewDlg)
	m_address = _T("");
	m_name = _T("");
	m_filename = _T("");
	//}}AFX_DATA_INIT
	m_tabstate=0;
	m_postfix=_T("");
}


void CNewDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNewDlg)
	DDX_Control(pDX, IDC_RGNLIST, m_rgnlist);
	DDX_Control(pDX, IDC_FILELIST, m_filelist);
	DDX_Control(pDX, IDC_DOCLIST, m_doclist);
	DDX_Control(pDX, IDC_TAB, m_tab);
	DDX_Control(pDX, IDC_PROGRAMLIST, m_worklist);
	DDX_Text(pDX, IDC_PROGRAMADDRESS, m_address);
	DDX_Text(pDX, IDC_PROGRAMNAME, m_name);
	DDX_Text(pDX, IDC_FILENAME, m_filename);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewDlg, CDialog)
	//{{AFX_MSG_MAP(CNewDlg)
	ON_BN_CLICKED(IDC_OK, OnOk)
	ON_BN_CLICKED(IDC_PROGRAMLOOK, OnProgramlook)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTab)
	ON_NOTIFY(NM_CLICK, IDC_PROGRAMLIST, OnClickProgramlist)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	ON_NOTIFY(NM_CLICK, IDC_RGNLIST, OnClickRgnlist)
	ON_NOTIFY(NM_CLICK, IDC_DOCLIST, OnClickDoclist)
	ON_NOTIFY(NM_CLICK, IDC_FILELIST, OnClickFilelist)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewDlg message handlers

void CNewDlg::OnOk() 
{
	// TODO: Add your control notification handler code here
	//CDialog::OnCancel();
	UpdateData();
	if(m_filename.IsEmpty())
	{
		MessageBox("请输入文件名!");
		return;
	}
	if(m_postfix.IsEmpty())
	{
		MessageBox("请选择文件类型!");
		return;
	}
	if(m_name.IsEmpty())
	{
		MessageBox("请创建工程!");
		return;
	}
	theApp.m_WorkName=m_name;
	CString temp=m_address+m_name;
	_mkdir(temp);
	temp+="\\";
	filename.Empty();
	filename=temp+m_filename;
	filename+=m_postfix;

	theApp.m_Path=temp;
	theApp.m_CurFileName.Format("%s%s",m_filename,m_postfix);

	CDialog::OnOK();
}

void CNewDlg::OnCancel() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}

void CNewDlg::OnProgramlook() 
{
	// TODO: Add your control notification handler code here
	CChooseDirDlg dlg;
	if(dlg.DoModal()==IDOK)
	{
		m_address.Empty();
		m_address=dlg.m_directory;
		UpdateData(false);
	}
	else
		return;
}

BOOL CNewDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_imageList.Create(16, 15, TRUE|ILC_COLORDDB|ILC_COLOR16, 7, 0);
	HICON hIcon = NULL;

    hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDI_WORK), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDI_WORKDLL), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDI_WORKEXE), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDI_DOC), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDI_HEAD), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDI_WORKRGN), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDR_CFFTYPE), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), 
	MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 15, 0);
	m_imageList.Add(hIcon);

	// TODO: Add extra initialization here
	m_tab.InsertItem(0,"工程");
	m_tab.InsertItem(1,"文件");
	m_tab.InsertItem(2,"工作区");
	m_tab.InsertItem(3,"其他文档");

	m_worklist.SetImageList(&m_imageList,LVSIL_SMALL);
	m_worklist.InsertItem(0,"AppWizard(.exe)",2);
	m_worklist.InsertItem(1,"AppWizard(.dll)",1);
	m_worklist.InsertItem(2,"Project",0);

	m_filelist.SetImageList(&m_imageList,LVSIL_SMALL);
	m_filelist.InsertItem(0,"f/f++ Header File",4);
	m_filelist.InsertItem(1,"f++ Source File",3);

	m_rgnlist.SetImageList(&m_imageList,LVSIL_SMALL);
	m_rgnlist.InsertItem(0,"Work Region",5);

	m_doclist.SetImageList(&m_imageList,LVSIL_SMALL);
	m_doclist.InsertItem(0,"Docment File",6);
	m_doclist.InsertItem(1,"EXE File",7);

	switch(m_tabstate)
	{
	case 0:
		m_tab.SetCurSel(0);
		m_worklist.ShowWindow(SW_SHOW);
		m_filelist.ShowWindow(SW_HIDE);
	    m_rgnlist.ShowWindow(SW_HIDE);
	    m_doclist.ShowWindow(SW_HIDE);
		break;
	case 1:
		m_tab.SetCurSel(1);
		m_filelist.ShowWindow(SW_SHOW);
		m_worklist.ShowWindow(SW_HIDE);
		m_rgnlist.ShowWindow(SW_HIDE);
	    m_doclist.ShowWindow(SW_HIDE);
		break;
	case 2:
		m_tab.SetCurSel(2);
		m_rgnlist.ShowWindow(SW_SHOW);
		m_worklist.ShowWindow(SW_HIDE);
		m_filelist.ShowWindow(SW_HIDE);
	    m_doclist.ShowWindow(SW_HIDE);
		break;
	case 3:
		m_tab.SetCurSel(3);
		m_doclist.ShowWindow(SW_SHOW);
		m_worklist.ShowWindow(SW_HIDE);
		m_filelist.ShowWindow(SW_HIDE);
	    m_rgnlist.ShowWindow(SW_HIDE);
		break;
	}

	//char exeFullPath[MAX_PATH]; 
    //GetModuleFileName(NULL,exeFullPath,MAX_PATH);//获得当前应用程序路径

	CWinApp* pApp = AfxGetApp();
    CString strPath=_T("");
    strPath = pApp->GetProfileString("Work Directory", "Path");
	if(!strPath.IsEmpty())
		m_address=strPath;
	else
	{
	char buffer[_MAX_PATH];

   /* Get the current working directory: */
    _getcwd( buffer, _MAX_PATH );
	m_address.Format(buffer);
	m_address+="\\";
	pApp->WriteProfileString("Work Directory", "Path", m_address);
	}
	m_name=theApp.m_WorkName;
	UpdateData(false);


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

void CNewDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel=m_tab.GetCurSel();
	switch(sel)
	{
	case 0:
		m_worklist.ShowWindow(SW_SHOW);
		m_filelist.ShowWindow(SW_HIDE);
	    m_rgnlist.ShowWindow(SW_HIDE);
	    m_doclist.ShowWindow(SW_HIDE);
		break;
	case 1:
		m_filelist.ShowWindow(SW_SHOW);
		m_worklist.ShowWindow(SW_HIDE);
		m_rgnlist.ShowWindow(SW_HIDE);
	    m_doclist.ShowWindow(SW_HIDE);
		break;
	case 2:
		m_rgnlist.ShowWindow(SW_SHOW);
		m_worklist.ShowWindow(SW_HIDE);
		m_filelist.ShowWindow(SW_HIDE);
	    m_doclist.ShowWindow(SW_HIDE);
		break;
	case 3:
		m_doclist.ShowWindow(SW_SHOW);
		m_worklist.ShowWindow(SW_HIDE);
		m_filelist.ShowWindow(SW_HIDE);
	    m_rgnlist.ShowWindow(SW_HIDE);
		break;
	}
	*pResult = 0;
}

void CNewDlg::OnClickProgramlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel=m_worklist.GetSelectionMark();
	switch(sel)
	{
	case 0:
		m_postfix.Empty();
		m_postfix=".exe";
		break;
	case 1:
		m_postfix.Empty();
		m_postfix=".dll";
		break;
	case 2:
		m_postfix.Empty();
		m_postfix=".prg";
		break;
	}
//	MessageBox(m_postfix);
	*pResult = 0;
}

void CNewDlg::OnClickRgnlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel=m_rgnlist.GetSelectionMark();
	switch(sel)
	{
	case 0:
		m_postfix.Empty();
		m_postfix=".dsw";
		break;
	}
//	MessageBox(m_postfix);
	*pResult = 0;
}

void CNewDlg::OnClickDoclist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel=m_doclist.GetSelectionMark();
	switch(sel)
	{
	case 0:
		m_postfix.Empty();
		m_postfix=".doc";
		break;
	case 1:
		m_postfix.Empty();
		m_postfix=".exe";
		break;
	}
//	MessageBox(m_postfix);
	*pResult = 0;
}

void CNewDlg::OnClickFilelist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel=m_filelist.GetSelectionMark();
	switch(sel)
	{
	case 0:
		m_postfix.Empty();
		m_postfix=".f";
		break;
	case 1:
		m_postfix.Empty();
		m_postfix=".cff";
		break;
	}
//	MessageBox(m_postfix);
	*pResult = 0;
}

void CNewDlg::SetTabState(int state)
{
	m_tabstate=state;

}

⌨️ 快捷键说明

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