3,245
社区成员
发帖
与我相关
我的任务
分享
BSTR CxxCtrl::GetLayoutList(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString strResult = TEXT("WINDOWLIST:1,2,3,4,5,6");
return strResult.AllocSysString();
}
BOOL CxxApp::InitInstance()
{
BOOL bInit = COleControlModule::InitInstance();
CString strResult = TEXT("WINDOWLIST:1,2,3,4,5,6");
m_layoutList = strResult.AllocSysString();
return bInit;
}
int CxxApp::ExitInstance()
{
SysFreeString(m_layoutList);
m_layoutList = NULL;
}
BSTR CxxCtrl::GetLayoutList(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return theApp.m_layoutList;
}
BSTR CxxCtrl::GetLayoutList(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return theApp.m_layoutList;
}
以下4种web测试,两类两种情况。
两类是本地和服务器,即htm文件放在本地硬盘和web服务器上两种类型。
两种情况是js代码的不同写法:
A.
function test()
{
var result = GetMyOcx().GetLayoutList();
alert(result);
}
B.
function test()
{
var reshaha = GetMyOcx().GetLayoutList();
alert(reshaha);
}
这两种情况,只是变量名不一样
测试1: 本地+A,结果为R1
测试2: 本地+B,结果为R2
测试3: 服务器+A,结果哦R2
测试3: 服务器+B,结果哦R2
结果R1:
一切正常
结果R2:
不正常。
在调用完 GetLayoutList(void) 之后,在web页面里弹出的内容没有错,但是接下来就发生了奇怪的事情,theApp.m_layoutList 的内存地址对应的内容变化了!起初以为是js中result变量名的问题,后来换成reshaha变量名也是一样,但仅仅发生在服务器上,但如果是用result变量名,则本地和服务器都会发生此种不正常的情况。
变化后的内容大致固定,目前遇到的内容有:
1. js里的一些代码片段(不全)
2. js其他一些变量的内容(不全)
3. 网址,通常是对应的wen页面文件名,比如:http://bbs.csdn.net/mydemo.htm
出现这种情况,确定js代码里的变量是函数内的局部变量而不是全局的
这是用拼音打字累死我了,暂时只把情况说一下,以后去我电脑上再补充
BOOL GetData(BSTR *pBstr)
{
*pBstr = SysAllocString(L"1234");
return TRUE;
}