NOME is written using Microsoft Visual C++, Microsoft Visual Basic and Visual Basic for Application (VBA)

The source code is organized in three modules:

  • Nome module (nome.dll), written in Visual C++, is responsible for implementing the user interface
  • Macro module (, written in VBA, implements the macros to detect the proper names and is the connection between Ms Word and nome.dll

The relationships between the two modules are the following

  • Installer module: written in VB.Net, provides the installation program  

How to compile Nome

  • Download Nome package (version 1.2)
  • Unzip the package using Winzip (Window) or unzip (Linux)

    Dll and Installer modules:

  • Open nome.sln using Visual Studio .Net (version 2003 or later), it contains two projects nome and installer
  • Compile the source code using commands in Visual Studio environment (Debug or Release mode)
  • nome implements the user interface using MFC Grid Control 2.25 (a fully featured MFC grid control for displaying tabular data) which is freely available at the Code Project website.

    Macro module:

  • Open using Microsoft Word (version 2002 or later)
  • Open Visual Basic Editor (Tools->Macros->Visual Basic Editor) to view the macros in

Contact: nome-feedback

More details on source code and the techniques used

Source code in Visual C++ (compiled with Visual Studio version 2003 or later)

  • Source code downloaded  from Code Project website
    • CColorBox  is a simple button that shows a color and lets the user change the color by clicking on it
    • Files in GridCtrl_src and NewCellTypes implement MFC grid control for displaying tabular data
  • NOME source code
    • CColorButton extends CButton to customize the text color
    • CGridCellNome extends CGridCell (from GridCtrl) to provide an CNomeEdit object instead of CInPlaceEdit when modifying the cell data
    • CNomeEdit  extends CInPlaceEdit to prevent the user from editing the cell (copy only)
    • CNomeButton extends CButton to implement tool tip enabled button
    • CNomeTab extends CTabCtrl to manage the tab pages, each tab page is represented by CTabDlg object
    • CNomTabDlg extends CDialog to implement the dialog containing tab page manager (a CNomeTab object)
    • CNomeProgress extends CDialog to implement the progressing dialog when NOME detects the proper names
    • CTabDlg extends CDialog and is a super class for CSetting and CReplacement
    • CSetting extends CTabDlg and implements Setting page
    • CReplacement extends CTabDlg and implements Replacement page
    • MyGrid (.h and .cpp) and nome.def implement interface API used to communicate with the VBA module
    • nome (.h and .cpp) implements DLL entry

Source code in VBA ( is divided in five modules and four classes

  • Modules
    • Nome is used to communicate with nome.dll and implements the algorithm to detect proper names
    • NomeOptions provides parameters for NOME program such as interface language, the location of inclusion file, exclusion file etc
    • NomeWindow wraps window management API in a way that it is more convenient to handle  in VBA   
    • Utils implements useful functions for proper name treatments such as RemoveTitles, RemovePossessive, CreateReplacement etc
    • WordFunctions encapsulates the revision tracking functions in Word
  • Classes   
    • MyHook listens Word events such as Close, Open, New
    • NomeDocument represents a document analysed by NOME
    • NomeName is a data structure for proper name detected by NOME
    • NomeNameRep is a data structure for replacement name proposed by NOME

Installer Source Code

    This program is written using Visual Basic.NET, it has only one form and three buttons.

It performs the following tasks:

  • Update/Install nome.dll: copy the nome.dll to the window system folder (example: C:\Windows\System32)
  • Update/Install macros: copy the following files to model directory in WORD
    • inclusions-fr.doc
    • inclusions-en.doc
    • exclusions-en.doc
    • exclusions-fr.doc
    • titles-en.doc
    • titles-fr.doc
  • Uninstall NOME: delete all copied  files
In order to install NOME manually:
  • Copy to model directory (Tools->Options->Directory->StartUp)
  • Copy nome.dll to the widow system folder if you have administrator privileges or specify the location of nome.dll in Nome module in

For example:  

Public Declare Function getWindowHandle Lib "nome" (ByVal id As Long) As Long
Public Declare Function getWindowHandle Lib "c:\Nome\nome.dll" (ByVal id As Long) As Long

Contact: nome-feedback