我的程序有个登陆界面 登陆后是单文档程序 我在CWinApp的派生类的InitInstance()函数中加了free((void*)m_pszProfileName);
 //改变Ini文件名.
m_pszProfileName=_tcsdup("c:\\sys.ini"); 这两句话,然后再在登录按钮对应的函数中添加了ini文件数据写入功能,结果生成了该ini文件,也实现了数据写入ini文件,但是登录后跳转到的单文档程序出错了,菜单不能实现不同界面的切换了,程序崩溃了,后来我把生成ini文件的语句和写入数据的语句都删了,程序还是恢复不了,原本菜单能切换的界面还是切换不了了,不知道怎么回事啊?高手帮忙看看吧!

解决方案 »

  1.   

    你的free干吗用啊?m_pszProfileName是动态分配的?
      

  2.   

    我看别人是这样生成ini文件的:
    //清除Ini变量
    free((void*)m_pszProfileName);
    //改变Ini文件名.
    m_pszProfileName=_tcsdup(m_strProfile);  其中m_pszProfileName不是我定义的 应该是系统变量吧,另外在调试的时候到\mfc\src\afxstate.cpp文件的AfxWndProcBase(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
    {
    AFX_MANAGE_STATE(_afxBaseModuleState.GetData());
    return AfxWndProc(hWnd, nMsg, wParam, lParam);
    }函数的时候出的错,不是我写的程序出错的,我就搞不清要去哪里修改了
      

  3.   

    // 去看一下别人的程序里 m_pszProfileName 是怎么定义的,对其是否有molloc之类的操作。
      

  4.   

    SetRegistryKey(_T("Siemens"));
    //  under "HKEY_CURRENT_USER\\Software"
    LoadStdProfileSettings();  // Load standard INI file options (including MRU)
    而向导生成的是:
    // Change the registry key under which our settings are stored.
    // You should modify this string to be something appropriate
    // such as the name of your company or organization.
    SetRegistryKey(_T("Local AppWizard-Generated Applications"));