// CodeAnalysisDlg.cpp : インプリメンテーション ファイル
//
#include "stdafx.h"
#include "CodeAnalysis.h"
#include "CodeAnalysisDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// アプリケーションのバージョン情報で使われている CAboutDlg ダイアログ
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// ダイアログ データ
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard は仮想関数のオーバーライドを生成します
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV のサポート
//}}AFX_VIRTUAL
// インプリメンテーション
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// メッセージ ハンドラがありません。
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCodeAnalysisDlg ダイアログ
CCodeAnalysisDlg::CCodeAnalysisDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCodeAnalysisDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCodeAnalysisDlg)
m_strProjName = _T("");
m_strSrcLine = _T("");
m_strCommLine = _T("");
m_strEmpLine = _T("");
//}}AFX_DATA_INIT
// メモ: LoadIcon は Win32 の DestroyIcon のサブシーケンスを要求しません。
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCodeAnalysisDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCodeAnalysisDlg)
DDX_Control(pDX, IDC_LIST_SOURCEFILE, m_listSourceFile);
DDX_Text(pDX, IDC_EDIT_PROJECTNAME, m_strProjName);
DDX_Text(pDX, IDC_EDIT2, m_strSrcLine);
DDX_Text(pDX, IDC_EDIT3, m_strCommLine);
DDX_Text(pDX, IDC_EDIT4, m_strEmpLine);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCodeAnalysisDlg, CDialog)
//{{AFX_MSG_MAP(CCodeAnalysisDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_SOURCEFILE, OnDblclkListSourcefile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCodeAnalysisDlg メッセージ ハンドラ
BOOL CCodeAnalysisDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// "バージョン情報..." メニュー項目をシステム メニューへ追加します。
// IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
// ウィンドウがダイアログでない時は自動的に設定しません。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
// TODO: 特別な初期化を行う時はこの場所に追加してください。
m_listSourceFile.DeleteAllItems();
CButton *pButton = (CButton *)GetDlgItem(IDC_BUTTON_DELETE);
pButton->EnableWindow(FALSE);
pButton = (CButton *)GetDlgItem(IDOK);
pButton->EnableWindow(FALSE);
return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}
void CCodeAnalysisDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// もしダイアログボックスに最小化ボタンを追加するならば、アイコンを描画する
// コードを以下に記述する必要があります。MFC アプリケーションは document/view
// モデルを使っているので、この処理はフレームワークにより自動的に処理されます。
void CCodeAnalysisDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// クライアントの矩形領域内の中央
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// アイコンを描画します。
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// システムは、ユーザーが最小化ウィンドウをドラッグしている間、
// カーソルを表示するためにここを呼び出します。
HCURSOR CCodeAnalysisDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CCodeAnalysisDlg::OnButtonBrowse()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CFileDialog dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY, "vcproj file(*.vcproj)|*.vcproj|dsp file(*.dsp)|*.dsp||");
int iRet = dlg.DoModal();
if( IDOK != iRet)
return;
m_listSourceFile.DeleteAllItems();
m_strProjName = dlg.GetPathName();
CStdioFile oFile;
if( !oFile.Open( m_strProjName, CFile::modeRead))
{
MessageBox( "cannot open file");
return;
}
int iFileType = 0;
if(0 == dlg.GetFileExt().CompareNoCase(_T("dsp")))
{
iFileType = 0;
}
else
{
iFileType = 1;
}
CString strLine;
CString strFile;
CString strTemp;
for( ;;)
{
if( !oFile.ReadString( strLine))
break;
strLine.Replace(_T("\t"), _T(" "));
strLine.TrimLeft();
strLine.TrimRight();
strLine.TrimRight(_T(">"));
strTemp = strLine;
strTemp.MakeUpper();
if(iFileType == 0)
{
if( "SOURCE=" != strTemp.Left( 7))
continue;
if( ".CPP" == strTemp.Right(4) || ".C" == strTemp.Right(2) || ".H" == strTemp.Right(2))
{
strFile = strLine.Right( strLine.GetLength() - 7);
m_listSourceFile.InsertItem( 0, strFile);
}
}
else if(iFileType == 1)
{
if(strTemp.Left(14).CompareNoCase(_T("RelativePath=\"")))
continue;
if( ".CPP\"" == strTemp.Right(5) || ".C\"" == strTemp.Right(3) || ".H\"" == strTemp.Right(3))
{
strFile = strLine.Right( strLine.GetLength() - 14);
strFile.TrimRight(_T("\""));
m_listSourceFile.InsertItem( 0, strFile);
}
}
}
CButton *pButton = (CButton *)GetDlgItem(IDC_BUTTON_DELETE);
pButton->EnableWindow(m_listSourceFile.GetItemCount() > 0);
pButton = (CButton *)GetDlgItem(IDOK);
pButton->EnableWindow(m_listSourceFile.GetItemCount() > 0);
UpdateData( FALSE);
}
void CCodeAnalysisDlg::OnButtonDelete()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
POSITION pos = m_listSourceFile.GetFirstSelectedItemPosition();
if (pos == NULL)
return;
int nItem = m_listSourceFile.GetNextSelectedItem(pos);
if( LB_ERR != nItem)
m_listSourceFile.DeleteItem( nItem);
CButton *pButton = (CButton *)GetDlgItem(IDC_BUTTON_DELETE);
pButton->EnableWindow(m_listSourceFile.GetItemCount() > 0);
pButton = (CButton *)GetDlgItem(IDOK);
pButton->EnableWindow(m_listSourceFile.GetItemCount() > 0);
}
void CCodeAnalysisDlg::OnDblclkListSourcefile(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
OnButtonDelete();
*pResult = 0;
}
void CCodeAnalysisDlg::OnOK()
{
CString strItem;
int iCount = m_listSourceFile.GetItemCount();
CStdioFile oSrcFile;
int iBlankCount = 0, iSourceCount = 0, iCommentCount = 0;
CString strLine;
for( int i=0; i<iCount; i++)
{
strItem = m_listSourceFile.GetItemText( i, 0);
if( !oSrcFile.Open( strItem, CFile::modeRead))
{
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
CodeAnalysis.rar (18个子文件)
CodeAnalysisDlg.cpp 8KB
StdAfx.cpp 230B
CodeAnalysisDlg.h 2KB
CodeAnalysis.vcproj 6KB
CodeAnalysis.cpp 2KB
CodeAnalysis.ncb 35KB
CodeAnalysis.suo 9KB
StdAfx.h 1KB
CodeAnalysis.rc 6KB
CodeAnalysis.opt 73KB
CodeAnalysis.dsp 4KB
Resource.h 966B
CodeAnalysis.h 1KB
CodeAnalysis.dsw 553B
res
CodeAnalysis.ico 1KB
CodeAnalysis.rc2 439B
CodeAnalysis.aps 37KB
CodeAnalysis.sln 913B
共 18 条
- 1
资源评论
- xjl_nad2016-06-14不怎么好用,还是谢谢!
- 暂时不用了2014-03-12一般吧,比较简单
- llf108110202052014-08-19可以用。。。不错
- _*真理◆2015-10-15很不错 丝毫不差
tuzhijun1980
- 粉丝: 0
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功