65.9K
CodeProject 正在变化。 阅读更多。
Home

项目重命名 - 重命名现有的 Visual Studio 项目

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.39/5 (13投票s)

2009年6月9日

CPOL

1分钟阅读

viewsIcon

61151

downloadIcon

2362

重命名现有 Visual Studio 项目的 MFC 应用程序。

ProjectRename

ProjRename-11.jpg

引言

这是一个 MFC 应用程序,用于重命名 Visual C++ 项目。
此应用程序将在所有文件中替换所有出现的“当前项目名称”为“新项目名称”,并重命名所有包含“当前项目名称”的文件名。

此应用程序支持

  1. VC6 ~ VC9 项目
  2. 更改项目 GUID
  3. 允许在重命名过程中取消
  4. UTF-8 文件,这些文件可能在项目名称为非英语语言时创建
  5. 显示经过的时间和失败的文件列表

    ProjRename-12.jpg

此应用程序是为 Windows XP 开发的,并使用 Windows XP 视觉样式。
在 Windows Vista 上,像 CEdit 这样的控件的边框可能显示不清晰。

用法

  1. 浏览要重命名的 Visual C++ 项目 (*.dsp *.sln)
  2. 输入新的项目名称
  3. 如果您想更改项目 GUID,请选择“项目 GUID 更改”
    (如果您不喜欢生成的 GUID,可以更改它)
  4. 单击“重命名”开始处理

Using the Code

该程序是一个基于对话框的应用程序。
它有两个视图,一个是“SelectView”,另一个是“ProgressView”。

BEGIN_MESSAGE_MAP(CProjectRenameDlg, CDialog)
   ON_WM_SYSCOMMAND()
   ON_WM_PAINT()
   ON_WM_QUERYDRAGICON()
   ON_WM_DESTROY()
   ON_MESSAGE(WMU_SELECT_VIEW_CLOSE, OnSelectViewClose)
   ON_MESSAGE(WMU_PROGRESS_VIEW_CLOSE, OnProgressViewClose)
   ON_MESSAGE(WMU_RENAME_FINISHED, OnRenameDone)
   ON_MESSAGE(WMU_RENAME_CANCELED, OnCancelRename)
END_MESSAGE_MAP()

当用户单击“重命名”开始重命名时,WM_SELECT_VIEW_CLOSE 消息从“SelectView”发送,并创建处理线程。

LRESULT CProjectRenameDlg::OnSelectViewClose(WPARAM wParam, LPARAM lParam)
{
   m_pRenameThread = (CRenameThread*)AfxBeginThread
	(RUNTIME_CLASS(CRenameThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
   m_pRenameThread->m_bCancel = FALSE;
   m_pRenameThread->m_pOwner = this;
   m_pRenameThread->m_renameOptions = ((CSelectView*)m_pSelectView)->GetRenameOptions();
   m_pRenameThread->ResumeThread();
}

当重命名完成时,线程发送 WM_RENANE_FINISHED 消息以通知重命名已完成。

BOOL CRenameThread::InitInstance()
{
    ASSERT(!m_renameOptions.strCurrentPath.IsEmpty());

    // Make list of files to rename
    m_astrFileList.RemoveAll();
    PrepareRename(m_renameOptions.strCurrentPath);

    m_renameStatus.nTotalFiles = m_astrFileList.GetSize();
    m_renameStatus.nCheckedFiles = 0;
    m_renameStatus.nRenamedFiles = 0;
    m_renameStatus.astrErrorList.RemoveAll();
    ProcessRename(m_renameOptions.strCurrentPath);
    return FALSE;
}

int CRenameThread::ExitInstance()
{
    m_pOwner->PostMessage(WMU_RENAME_FINISHED);
    return CWinThread::ExitInstance();
}

历史

  • 2009 年 6 月 8 日:发布版本 0.10
  • 2009 年 6 月 9 日:版本 0.11 修复了写入 UFT-8 文件时的错误
© . All rights reserved.