65.9K
CodeProject is changing. Read more.
Home

Project Rename - Rename an Existing Visual Studio Project

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.39/5 (13 votes)

Jun 9, 2009

CPOL

1 min read

viewsIcon

60600

downloadIcon

2330

MFC Application to rename an Existing Visual Studio Project

ProjectRename

ProjRename-11.jpg

Introduction

This is an MFC application that renames Visual C++ Projects.
This application will replace all occurences of "Current Project Name" to "New Project Name" in all files and rename all file names that have "Current Project Name" in it.

This application supports:

  1. VC6 ~ VC9 Projects
  2. Changing the Project GUID
  3. Allows cancel during renaming
  4. UTF-8 files that may be created when the project name was non-english language
  5. Shows elapsed time and failed file list

    ProjRename-12.jpg

This application was developed for Windows XP and uses Windows XP visual style.
The borders of controls like CEdit may not be displayed clearly on Windows Vista.

Usage

  1. Browse the Visual C++ project to rename (*.dsp *.sln)
  2. Enter new project name
  3. Select "Project GUID change" if you want to change the project GUID
    (You can change GUID if you don't like the generated GUID)
  4. Click "Rename" to begin processing

Using the Code

This program is a dialog based application.
It has two views, one is "SelectView" the other is "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()

When the user clicked "Rename" to begin renaming, WM_SELECT_VIEW_CLOSE message is sent from "SelectView" and the thread to process is created.

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();
}

When renaming has been finished, the thread sends WM_RENANE_FINISHED message to notify that renaming has been completed. 

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();
}

History

  • 8 Jun 2009: Version 0.10 Released
  • 9 Jun 2009: Version 0.11 Fixed bug with writing to UFT-8 files