我用的很好。
void CCounterExtension::Default(CHttpServerContext* pCtxt)
{
static unsigned int count=0;
CString s;
GetPrivateProfileString("ISAPI_Counter", "Visits", "0", s.GetBuffer(NUM), NUM, "/Counter.dat");
s.ReleaseBuffer(); count=atol(s);

StartContent(pCtxt);
WriteTitle(pCtxt); s.Format("%u", ++count);

CString visits="<div align=\"center\">";
for( int n=NUM, m=0; n>0; n-- )
{
  if( n>s.GetLength() )
visits += "<img src=\"img/num0.gif\">";
  else
visits = visits + "<img src=\"img/num" + s[m++] + ".gif\">";
}
visits += "</div>"; *pCtxt << visits; WritePrivateProfileString("ISAPI_Counter", "HeadInfo", "tlovexyj", "/Counter.dat");
WritePrivateProfileString("ISAPI_Counter", "Visits", s, "/Counter.dat"); EndContent(pCtxt);
}

解决方案 »

  1.   

    建议不要在构造函数中使用该函数。可为该类另编写一函数实现构造函数的功能,在CTryApp的InitInstance()中调用该函数。
      

  2.   

    to tlovexyj(炎龙):
    你用的是GetPrivateProfileString函数
    跟我的不一样
      

  3.   

    to wuqingguo(任我行):
    但现在对于每一个CTryTry类的对象或者指针都需要从文件里读取数据
    如果另外编写一个函数的话,那对象或者指针新建的时候都需要调用那个函数了
      

  4.   

    那么可不可以不把CTryTry类的对象放在CTryApp中,而放在其他类中,这样就可以在构造函数中调用该函数了。
      

  5.   

    to wuqingguo(任我行):
    因为把对象放在CTryApp中的话,可以到处调用,比较容易。
    现在我想知道为什么会出错,以及有没有别的好的代替方法。
      

  6.   

    你的函数用对了吗?DWORD GetProfileString(
      LPCTSTR lpAppName,        // address of section name
      LPCTSTR lpKeyName,        // address of key name
      LPCTSTR lpDefault,        // address of default string
      LPTSTR lpReturnedString,  // address of destination buffer
      DWORD nSize               // size of destination buffer
    );
      

  7.   

    你的函数用对了吗?DWORD GetProfileString(
      LPCTSTR lpAppName,        // address of section name
      LPCTSTR lpKeyName,        // address of key name
      LPCTSTR lpDefault,        // address of default string
      LPTSTR lpReturnedString,  // address of destination buffer
      DWORD nSize               // size of destination buffer
    );
      

  8.   

    to lazy_bull(懒散的牛):
    你用的跟我用的还是有区别的,你的是读取win.ini文件里的信息
    我的是读取对应于我的执行文件名的ini文件里的信息的。
      

  9.   

    CWinApp::GetProfileString CString GetProfileString( LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault = NULL );
    这是CWinApp的一个函数。
      

  10.   

    是CWinApp对象还未构造完成。我调试了一下,发现错误出现在这个地方:ASSERT(m_pszProfileName != NULL);
     
      

  11.   

    to wuqingguo(任我行):
    从整个流程来看,我也觉得是CWinApp对象还没构造完成
    就开始调用CWinApp的函数了
    现在我有的解决办法
    一,用指针,不用对象
    二,采用两个构造函数,另外需要一个函数
    不知道还有没有别的办法了?
      

  12.   

    CWinApp已经构造完成了。只是m_pszProfileName还未赋值,可在CTryTry的构造函数中加上一句:pApp->m_pszProfileName="filename";(不知道m_pszProfileName是不是public变量)。
      

  13.   

    在CTryApp *pApp = (CTryApp*)AfxGetApp();
    CString str = pApp->GetProfileString("Section" , "Key" , "Default") ;之前加上strcpy(m_pszProfileName,szIniPathandFileName);
    其中的szIniPathandFileName是你的ini文件的路徑加文件名﹐試試看﹗:)
      

  14.   

    CWinApp不是有一个m_pszExeName的成员变量吗?