sendmessage wm_settext ,老是把text清空

Wflycar 2008-12-22 04:56:07
郁闷死了。。。哪位高人帮忙看看是怎么回事。
一个程序两个窗口form1 和 form2 ,form1 上有textbox1 和 button1 。 form2 上有button1 。还有一个模块pb , 声明了以一个模块变量 public hdd as IntPtr 。
运行先启动form1 ,点击 Form1 上的button1 启动form2 ,点击form2 上的button1 要求改变 form1.textbox1.text 。问题是每次运行,总是把textbox1.text 清空而已,怎么也显示不了新赋的值。


dim fr2 as form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
pb.hdd = TextBox1.Handle
fr2 = New Form2
fr2.Show()
End Sub




form2 主要代码:

Public Const WM_SETTEXT = &HC
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ab As String = "1230"
Dim abc As IntPtr
SendMessage(pb.hdd, WM_SETTEXT, 0, ab)
End Sub


...全文
485 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanlongwuhui 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 51Crack 的回复:]
用Long怎么会有问题,怪怪!
[/Quote]
呵呵,不是用Long有问题,而是API函数声明有误,其中2个参数的类型不该是LONG,应该是integer。
浮生若梦丶 2008-12-22
  • 打赏
  • 举报
回复
floadcloud 2008-12-22
  • 打赏
  • 举报
回复
up
51Crack 2008-12-22
  • 打赏
  • 举报
回复
用Long怎么会有问题,怪怪!
wosytl 2008-12-22
  • 打赏
  • 举报
回复
ding
yanlongwuhui 2008-12-22
  • 打赏
  • 举报
回复
API函数在VB中与VB.NET中的声明不一样,需要注意LONG跟INTEGER的转换
fairy4 2008-12-22
  • 打赏
  • 举报
回复
老大,赋值问题,没必要用到Windows API吧!
你可以dim一个公共变量,
比如 在 Module1l里面
public frm as form1
Form1:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
frm = Me
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fm As New Form2
fm.Show()
End Sub

Form2:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
frm.TextBox1.Text = "12345"
End Sub
fairy4 2008-12-22
  • 打赏
  • 举报
回复
呵呵,恭喜你自己解决了
Wflycar 2008-12-22
  • 打赏
  • 举报
回复
一个通宵过去了,最后我自己找到了答案。。。定义sendmessage 的时候不能用long ,要用integer , 我哭...就这样耗费了我一个晚上和100分。
希望这个经历对大家有帮助。明天结贴,均分。
Wflycar 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fairy4 的回复:]
老大,赋值问题,没必要用到Windows API吧!
你可以dim一个公共变量,
比如 在 Module1l里面
[/Quote]

fairy4兄弟,我当然知道这样很容易达到。我只不过把我要用的东西抽出来了,另外弄了个测试程序。我实际用的Form1有很多控件,把它声明成公共很占资源,还有可能跟其它变量冲突。这个工程有三四十个自定义类,这样做好像不太好吧,呵呵。
还是很感谢你的支持。
g1y9d861213 2008-12-22
  • 打赏
  • 举报
回复
UP
Tiger_Zhao 2008-12-22
  • 打赏
  • 举报
回复
不同语言的基本类型的对应关系要牢记,MSDN for .Net 的“介绍 .NET Framework 类库”下就有一个类型对应表。

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧