看到一个源码使用Imalloc来为一个结构分配内存空间!可是我使用rect结构的时候,没有分配空间直接使用,也没发生错误啊!例子如下:
Dim lptvid As Long
Dim tvid As TVITEMDATA
lptvid = isMalloc.Alloc(Len(tvid)) ' isMalloc 就是Imalloc为使用的结构体分配内存有什么讲究吗?望大侠们指点一下!`(0∩_∩0)′
Dim lptvid As Long
Dim tvid As TVITEMDATA
lptvid = isMalloc.Alloc(Len(tvid)) ' isMalloc 就是Imalloc为使用的结构体分配内存有什么讲究吗?望大侠们指点一下!`(0∩_∩0)′
解决方案 »
- 咱押宝有分了,问个问题,进者有份啊,100分
- doevents 和 timer 的冲突?
- SQL如何处理这样的数据源吗?
- 请问在VB写导出到EXCEL中的时候,怎么设置EXCEL的某列为文本属性,否则导出到EXCEL中会把前面的0给取掉
- 我做了一个winsock传输文件的程序,但是传送端与接收端收到的文件 有字节的差异,为什么? 详细内容见本贴
- VB中如何一次提交多个查询语句给ORACLE数据库执行?
- 我想写个识别标点符号的函数,帮忙看看
- 在线等待,vb捕获不到enter
- 怎样获取cpu的ID号?
- 再次求教关于TextBox的问题!急!!!
- 如何判断一串字符串全是由数字组成的
- 如何用变量名定义控件的属性名.
lptvid 作为‘指针’,其值“指向”一个 TVITEMDATA类型 的结构体数据区。跟你一般情况下用 RECT类型 的结构体变量(自定义数据类型)是不一样的。
其实他这个也不必用API来做,这样的效果是一样的:
Dim lptvid As Long
Dim tvid As TVITEMDATA
'lptvid = isMalloc.Alloc(Len(tvid)) '动态分配了一个内存区。变量 tvid 的内存区并没有利用。
lptvid = VarPtr(tvid) 'lptvid 指向了变量 tvid 的区域。
如果你声明了一个自定义类型的变量数组,编译器同样会给你的‘数组’分配一片合法的内存空间。
只要你的“结构体类型”正确定义了,你使用起来跟 VB 的基本数据类型是完全相同的。
(唯一的区别是:基本类型肯定是 Public 的;但自定义类型可以是 Public的,也可以是 Private的)
Dim tvid As TVITEMDATA
lptvid = VarPtr(tvid)