自定义消息不适用于带有向导的C ++项目模板

时间:2014-07-18 12:08:23

标签: visual-c++ visual-studio-2012 project-template

我已按照此处的教程http://msdn.microsoft.com/en-us/library/ms185301.aspx生成了一个模板项目,该项目允许我使用向导替换代码中的参数。

这适用于我的所有C#项目,例如,如果我的模板中有以下内容:

using System.Runtime.Serialization;
using $customvariable$Definitions;

namespace $customvariable$Objects
{
    /// <summary>
    /// $customvariable$ Camera
    /// </summary>
    public class $customvariable$Camera
    {
        #region Constructor
        /// <summary>
        /// Instantiates a new instance of the $customvariable$Camera class
        /// </summary>
        public $customvariable$Camera() :
            base()
        {

        }
        #endregion
    }

我可以将customvariable重命名为我想要的任何内容,并在生成的项目中生成。

BUT 如果我在可视化C ++项目中执行完全相同的操作,则自定义变量不会被替换。

我如何才能使其适用于C ++代码文件

1 个答案:

答案 0 :(得分:1)

C ++使用不同的方法来替换模板值。不幸的是,语法与C#不同。一种可能的解决方案(尽管可能不是最好的)是拥有两个单独的模板文件并使用“语言”标志来确定使用哪个。查看差异herehere

以下是C ++中的外观示例...

static AFX_EXTENSION_MODULE [!output PROJ_SOURCE]DLL = { NULL, NULL };

#ifdef _MANAGED
#pragma managed(push, off)
#endif

extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    // Remove this if you use lpReserved
    UNREFERENCED_PARAMETER(lpReserved);

    if (dwReason == DLL_PROCESS_ATTACH)
    {
        TRACE0("[!output PROJ_SOURCE].DLL Initializing!\n");

        // Extension DLL one-time initialization
        if (!AfxInitExtensionModule([!output PROJ_SOURCE]DLL, hInstance))
            return 0;

        // Saves the DLL instance handle for later use with ChangeResCl. 
        resHandle = hInstance;

在上面的代码中,使用“[!output PROJ_SOURCE]”在两个不同的位置替换dll的名称。