有关handle的问题(100分)

  • 主题发起人 主题发起人 Dk108
  • 开始时间 开始时间
D

Dk108

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我获得了一个button或edit的handle,我怎么才能获取button的事件,或者edit里面的值以及
edit的name?
 
事件和name是类的成员,而handle是Windows句柄,好像没有直接的办法可以得到,
当然也可以遍历窗体上的所有控件,我实在想不出什么好办法了。
至于edit的text可以直接调用一个API函数:
var
; s: array[0..20] of char; //大小自己决定
begin
; GetWindowText(handle, s, 20);
end;
 
本问题至少出现N次最好知道WINDOWS常用API,Message这就很简单了
 
getclassname(handle,p,sizeof(p))
 
为什么GetWindowText(handle,p,sizeof(p))在class name为Combobox,Edit时不能获取Text?
Combobox和edit好像是Vc++中的class,delphi中的是:TCombobox和TEdit
 
想要彻底理解这个问题还是学一学API吧。
此class非彼class,
TComboBox和TEdit是Delphi中的类,VC++中的类是CComboBox和CEdit,
这些类都是面向对象编程中的类,而COMBOBOX和EDIT是Windows系统中
的窗口类,这个类和前面说的类根本不是一回事。
之所以GetClassName会得到TComboBox是因为程序运行的时候向Windows
系统注册了这个窗口类,这个TComboBox和前面那个TComboBox也不是一
回事。
向你推荐一本书,《Windows程序设计》-Charles Petzold著,
看了以后就什么都明白了。
 
to libin06:
; ; 有没有电子版的<Windows程序设计>?
 
目前我只在超星见过一本下册,其他的还没见到。
我花了160大洋买了一套(好心痛啊),随书光盘里有CHM格式的英文版,你要不要。
 
to libin06:
英文版的也好呀:) 谢谢!
 
研究一下RTTI吧,需要的话留下妹儿,我这有个范例
 
to tseug:

; ; xzl@swufe.edu.cn

thanx :)
 
---- 下面举一个利用Handle传递位图的例子:
procedure TForm1.LoadBmpClick(Sender: TObject);
var
bmp:TBitmap;
begin
; ; bmp:=TBitmap.Create;
; try
; ; bmp.LoadFromFile('c:/windows/setup.bmp');
; ; with image1 do begin
; ; ; Picture.Bitmap.Handle:=bmp.Handle;
; ; ; Update;
; ; ; Refresh;
; ; end;
; finally
; ;bmp.Free;
; end;
end;
我想触类旁通,亦可以传递button或edit得句柄,然后读出其name,caption等!
 
后退
顶部