佚名通过本文主要向大家介绍了关于二次函数动点问题,关于函数零点问题,关于函数对称问题,函数零点问题,二次函数动点问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于CreateStreamOnHGlobal函数的怪异问题
描述:
解决方案1:
描述:
我在VS2005中用了一段代码:
#include <atlbase.h>//在文件的顶部
LPTSTR lpMem = (LPTSTR)::GlobalAlloc( GPTR, ::lstrlen( lpHtml )+1 );
::lstrcpy( lpMem, lpHtml );
CComPtr< IStream > spStream;
::CreateStreamOnHGlobal( lpMem, TRUE, &spStream );
这段代码的意思是创建一个字符流指针,“lpHtml”变量是LPTCSTR类型全局变量,编译通过了,但是运行就出错了,问题在CreateStreamOnHGlobal函数上,这段代码是放在
OnInitDialog函数里的,除了VS自动生成的代码没有其他代码。奇怪的是我用同样的方法同样的代码,在VC6中编译运行就没有任何问题,一切正常,请大家试一试,也请高手
帮助解决一下这个问题。
解决方案1:
LPCTSTR lpHtml=TEXT("test");
//vs 2005默认是unicode,下面一行造成分配的空间不够,改成如下便没问题
//vc6.0的sizeof(TCHAR)等于一,所以没有问题。
LPTSTR lpMem = (LPTSTR)::GlobalAlloc( GPTR, (::lstrlen( lpHtml )+1)*sizeof(TCHAR) );
::lstrcpy( lpMem, lpHtml );
CComPtr < IStream > spStream;
::CreateStreamOnHGlobal( lpMem, TRUE, &spStream );