热情软件屋

 

怎样才能作到更改其它程序窗口中编辑框中的内容呢


编号:QA003299
建立日期: 2000年9月4日 最后修改日期:2000年9月4日
所属类别:

violing:
    本问题涉及的操作系统:中文Windows98 SE
    本问题涉及的编程工具:Delphi 5.0
    遇到的问题:Title: SetWindowText怎样更新编辑框的内容
    我编写一个程序来更改另一个应用程序窗口Form1中的一个可读写的编辑框中的内容:
    (Form1的hWnd已知为h,编辑框的hWnd为h1,mystring为PChar变量)
     mystring:='TestMyString'+#0;
     SetWindowText(h1,mystring);
     GetWindowText(h1,dispstring);
     SetForegroundWindow(h);
    取得的结果dispstring和mystring的的确确是相同的,但Form1的相应编辑框的显示总是仍为原来的值。立即运行Form1,结果表明编辑框中的内容没有被改变。如果换编辑框为命令按钮却没有问题。这是为什么呢,百思不得其解。而且,如果Form1是自己本身,且编辑框是自己窗口的一个子窗口(编辑框),这样做也没有问题。怎样才能作到更改其它程序窗口中编辑框中的内容呢?请专家指教,十分感激。

回答:

    这个问题比较复杂,如果那个程序窗口中的编辑框是标准的Windows控件(象Delphi和VC++中的控件),那么使用SetWindowText的确可以修改编辑框中的内容。但是如果不是Windows控件,那就很难说了。比如VB中的编辑框。如果使用你的方法运行后,如果用Spy++看,该编辑框的Caption改变了(正如你说的dispstring和mystring的的确确是相同的),但是对于VB来说Caption和文本是不同的,所以显示没有变化。如果你需要修改VB的编辑框,就要使用SendMessage发送WM_SETTEXT消息,如:
    SendMessage(h, WM_SETTEXT, 0, longint(LPSTR('Annn')));

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio