我用的很好。
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);
}
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);
}
你用的是GetPrivateProfileString函数
跟我的不一样
但现在对于每一个CTryTry类的对象或者指针都需要从文件里读取数据
如果另外编写一个函数的话,那对象或者指针新建的时候都需要调用那个函数了
因为把对象放在CTryApp中的话,可以到处调用,比较容易。
现在我想知道为什么会出错,以及有没有别的好的代替方法。
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
);
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
);
你用的跟我用的还是有区别的,你的是读取win.ini文件里的信息
我的是读取对应于我的执行文件名的ini文件里的信息的。
这是CWinApp的一个函数。
从整个流程来看,我也觉得是CWinApp对象还没构造完成
就开始调用CWinApp的函数了
现在我有的解决办法
一,用指针,不用对象
二,采用两个构造函数,另外需要一个函数
不知道还有没有别的办法了?
CString str = pApp->GetProfileString("Section" , "Key" , "Default") ;之前加上strcpy(m_pszProfileName,szIniPathandFileName);
其中的szIniPathandFileName是你的ini文件的路徑加文件名﹐試試看﹗:)