我遇到几个怪问题,哪位高手帮帮我?我快要疯了!!!!!
xiaoy 2001-07-07 09:37:32 对不起,只有这么多分了。
1、为什么我在用SDK编程时,不能用new、delete?而我用malloc,free时又会出错。我已经把<memory.h><malloc.h>几个文件包进来了。
2、我想做一个字符串类,以代替CString在SDK编程时方便用字符操作,但用SDK编程时(不用VC的向导,而是全部代码自己写)居然不能用,这个类是没问题的,如果用VC的向导产生一个SDK框架,这个类不动一个字母,就没事了。
3、还是上面这个类,请看下述代码及后面的说明:
CStr CStr::Left(int nLen)
{
if(_nLen<nLen || nLen<0)throw("Error string length");
CStr sTemp;
delete sTemp._p; //_p为类的private,保存实际的字符串。
sTemp._nLen=nLen+1; //_nLen为类的private,保存字符串长度
sTemp._p=new char[sTemp._nLen];
for(int i=0;i<nLen;i++){
sTemp._p[i]=_p[i];
}
sTemp._p[i]='\0'; //到这里的时候,sTemp还是一个有效的字符串
return sTemp; //到这里,sTemp就已经变为空串了。
}
4、编程时我用了一个函数,它有三个参数:(HDC hdc,int nFrom,int nAngle),在运行到该函数时,我发现,在刚进入函数时,hdc,nFrom,nAngle三个数还是一个有效的值,可是运行几步后,这三个值居然全部为零了。
5、有一个程序,运行几分钟后就不能刷新了,而且这时系统也变得极不稳定,我查看系统资源,发现只要这个程序WM_UPDATE一次,可用内存就减少一点,而已分配内存不变,这是不是就叫内存泄漏?怎样才能检查内存泄漏?
6、用SDK编程,我处理了WM_ERASEBKGRND消息,但是却不能改变window的背景,如果是基于dialog的程序,倒是可以改变背景。而且,对于一般的程序,窗口在启动时,它把原来screen上的内容弄到它的client里做背景了。我怎么样才能自己处理背景呢?按照MSDN的解释,要返回非零值,可是我返回1不行,返回 HBRUSH 也不行。