| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 589 人关注过本帖
标题:【求助】初学API,发现问题
只看楼主 加入收藏
cyber_tom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-26
收藏
 问题点数:0 回复次数:9 
【求助】初学API,发现问题
小弟初学API
今天学习到GetWindowText函数,发现一个问题,肯请各位不吝指教。
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
sub a()
Dim stmp As String
stmp = String(100, " ")
GetWindowText Me.hwnd, stmp, 100
MsgBox stmp
end sub

以上程序结果是输出所在窗体的标题。但是lpString传入方式是ByVal,也就是按值传入,GetWindowText函数本身不会改变lpString的值,可是这里stmp的值明明被改变了。
搜索更多相关主题的帖子: API 初学 
2007-08-07 19:42
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
因为所有的API函数都遵守C代码约定,所以第二个参数的原型是Char *(也就是指向字符的指针),所以当你把STMP放入第二个参数时,API函数所取得的是STMP的第一个字符的地址,自然当API函数修改了这一片内存的内容后STMP的内容就会被改变。这也是为什么STMP在传入lpString前要先给STMP传入足够大空间的字符,因为如果STMP如果没有被赋值的话就会让API函数试图访问一片未知的内存块,就是引发Windows的保护性错误。

VB QQ群:47715789
2007-08-07 20:25
cyber_tom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-26
收藏
得分:0 
小弟不才,经jeforn兄指点,感悟良多。

C代码约定内容是怎样的?

想了解一下,想必对以后的编程肯定大有用处。
2007-08-07 20:45
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
.....Joforn的意思是说C语言中不存在STRING这个类型  所以第二个参数的原型是Char *(也就是指向字符的指针)

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-08-07 20:49
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 
LZ没学过C???

Repeat  Life=Study;Until (death);
2007-08-07 20:54
cyber_tom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-26
收藏
得分:0 


2007-08-07 20:57
cyber_tom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-26
收藏
得分:0 
丢脸中...
2007-08-07 20:57
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 
没什么丢脸不丢脸的。
孔子都说了,不懂就要学嘛,不懂就问嘛,还说什么是知也呢。。。呵呵

Repeat  Life=Study;Until (death);
2007-08-07 21:00
cyber_tom
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-26
收藏
得分:0 
C是学过点皮毛。
现在玩VB时间长了,就用VB的思维去考虑问题了。
呵呵。
2007-08-07 21:57
fanqiefriend
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-8
收藏
得分:0 
漫漫学习呀
2007-08-08 13:19
快速回复:【求助】初学API,发现问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034768 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved