那如果句柄标识的是其他程序中的对象呢?还能找到它的父类?如果是内核对象的句柄呢?或者gdi对象?
没办法通过句柄判断出此对象是否是~~内核对象或者用户对象,更别说它是否有父类以及父类是什么了。
没办法通过句柄判断出此对象是否是~~内核对象或者用户对象,更别说它是否有父类以及父类是什么了。
解决方案 »
- 请教一句SQL语句!?谢谢
- 一个就在于edit的简单的问题,新手求教
- 如何使用代码修改一个Exe或Dll文件的版本信息?
- DCOM的小问题,急!!!分不够再加
- 简单问题:关于MediaPlayer控件
- 请列举ADOConnection.ConnectionString有几种表示方式(用SQL server 2000)
- 诚求一类似PB的DataWindow的数据库控件!有分多多多哦!
- 下面是"树型结构表示科目代码的一种高效算法"用BDE连接数据库的,那怎么改成ADO连接呀,答者有分
- 真怪,动态库明明释放完成了,为何还是出错?
- 如何动态清除TIMAGE控件的内容?
- dbgrid如何不直接显示数据库中的字段名,而是显示指定中文名
- 关于修改数据库中的记录。
AnisString ClassName;GetClassName(hWnd,ClassBuf,sizeof(ClassBuf));
ClassName=AnsiString(ClassBuf);主:这种方法只得到控件的类名,无法得到控件的父类的类名。
The GetClassName function retrieves the name of the class to which the specified window belongs. int GetClassName(
HWND hWnd, // handle to window
LPTSTR lpClassName, // class name
int nMaxCount // size of class name buffer
);
procedure TForm1.Button2Click(Sender: TObject);
var
vBuffer: array[0..255]of Char;
vClass: TPersistentClass;
begin
GetClassName(Handle, vBuffer, 255);
Caption := vBuffer;
RegisterClasses([TForm1]);
vClass := GetClass(vBuffer);
if Assigned(vClass) then ShowMessage(vClass.ClassName);
UnRegisterClasses([TForm1]);
end;
我想做一个打印的控件,只要传入需要打印的控件的句柄就可以打印出当前它的内容来,但是对于象LISTVIEW,DBGRID的这样的控件呢,我就想得到他们当前的内容然后打印出来,所以首先是要判断控件是属于那个类。
另外一个问题是:
如果我知道了类LISTVIEW的对象的句柄,并且知道它属于LISTVIEW类,如何得到它的内容呢????
procedure TForm1.Button1Click(Sender: TObject);
var
ClassRef: TClass;
begin
ListBox1.Clear;
ClassRef := Sender.ClassType;
while ClassRef <> nil do
begin
ListBox1.Items.Add(ClassRef.ClassName);
ClassRef := ClassRef.ClassParent;
end;end;