高手看过来,有散!

S海鸥 2003-08-08 11:10:53
高手看过来….请教几个问题?
---------------------------------------------------------------------------------
procedure Tfrm_itemtca.Resize(Sender: TObject);
begin
with Owner as TForm do
Self.SetBounds(0, 0, ClientWidth,
ClientHeight);
end;
---------------------------------------------------------------------------------
1. 此处的 Self 指的是 对象 Tfrm_itemtca?
---------------------------------------------------------------------------------
Control.pas
procedure TWinControl.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
var
WindowPlacement: TWindowPlacement;
begin
if (ALeft <> FLeft) then
begin
if HandleAllocated then
SetWindowPos(FHandle, 0, ALeft, ATop, AWidth, AHeight,
SWP_NOZORDER + SWP_NOACTIVATE)
else
begin

begin
GetWindowPlacement(FHandle, @WindowPlacement);
WindowPlacement.rcNormalPosition := BoundsRect;
end;
end;
end;
end;

function GetWindowPlacement; external user32 name 'GetWindowPlacement';
--------------------------------------------------------------------------

2.GetWindowPlacement(FHandle, @WindowPlacement);
这里的’@WindowPlacement ‘?, 跟踪进去
在windows 里发现如下,
function GetWindowPlacement; external user32 name 'GetWindowPlacement';
再也找不到…, 也不明白上面是什么意思?
---------------------------------------------------------------------------------
Windows.pas
TWindowPlacement = tagWINDOWPLACEMENT;

tagWINDOWPLACEMENT = packed record
length: UINT;
flags: UINT;
showCmd: UINT;
ptMinPosition: TPoint;
ptMaxPosition: TPoint;
rcNormalPosition: TRect;
--------------------------------------------------------------------------

3. tagWINDOWPLACEMENT = packed record 这种定义怎样理解?

4. 关于 ‘ = ‘ 有几中意思? 如
a . TWindowPlacement = tagWINDOWPLACEMENT;
b. if Form2 = nil then
………


...全文
79 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eastunfail 2003-08-10
  • 打赏
  • 举报
回复
怎么还不结贴啊
Eastunfail 2003-08-08
  • 打赏
  • 举报
回复
1.self很简单,在什么类中用他就是代表什么。self其实是类的成员函数的一个隐含参数
2.@表示取指针。@WindowPlacement就是WindowPlacement的指针
3. external user32 用在静态声明API的时候指定DLL文件名,name用来指定DLL导出的函数名。这里user32是一个常量,字符串类型,你可以在windows.pas文件中找到
4.你可以作个试验:
type a=record
field1:byte;
field2:integer;
end;
b=packed record
field1:byte;
field2:integer;
end;
在用sizeof来查看两个结构的大小就可以了。


p.s. 红星用来粗略表示专家分的多少,5000-10000就是1颗红星
S海鸥 2003-08-08
  • 打赏
  • 举报
回复
To Eastunfail(恶鱼杀手)

课外话题,

你的 红五角星 代表?
S海鸥 2003-08-08
  • 打赏
  • 举报
回复
To: Eastunfail(恶鱼杀手)
1. var
frm_itemtca: Tfrm_itemtca;
那指的是frm_itemtca 囖

2. GetWindowPlacement(FHandle, @WindowPlacement);
这里的’@WindowPlacement ‘前面有个 ‘@’ 是什么意思?

3. 在windows.pas 里,有个函数如下:
这是一个什么函数?
external user32 name是什么意思?
function GetWindowPlacement; external user32 name 'GetWindowPlacement';

4.‘packed的record是为了和API的结构兼容,在编译期没有采取内存布局优。’
那packed 什么结构呢? 请举例说明(笨学生)
Eastunfail 2003-08-08
  • 打赏
  • 举报
回复
揭帖啊
S海鸥 2003-08-08
  • 打赏
  • 举报
回复
to lynew(死循环-开始)

up 啥?
lynew 2003-08-08
  • 打赏
  • 举报
回复
up
S海鸥 2003-08-08
  • 打赏
  • 举报
回复
课外话题:

想申请一ISP服务器代理商, 为企业提供一些 web, 网页, 邮箱等, 要去
北京申请吗?
手续怎么办?
总费用多少?
能否拉到客户?
成功率多少?
........
Eastunfail 2003-08-08
  • 打赏
  • 举报
回复
课外话题?

设置 我感兴趣的论坛 -> 配置我感兴趣的论坛
Eastunfail 2003-08-08
  • 打赏
  • 举报
回复
1. 类中的Self永远表示当前实例。不是指Tfrm_itemtca,而是他的实例的指针,你调用的SetBounds是Tfrm_itemtca的方法
2.没有看懂你的意思
3.packed的record是为了和API的结构兼容,在编译期没有采取内存布局优化。
4.=只有一个意思。表示相等啦 :P。
你的a的是定义在type域内,所以TWindowPlacement = tagWINDOWPLACEMENT表示声明一个记录类型TWindowPlacement,内部组织跟tagWINDOWPLACEMENT一样的。也可以说跟tagWINDOWPLACEMENT加一个别名TWindowPlacement
你的b则是用来判断Form2与nil是否相等的。
S海鸥 2003-08-08
  • 打赏
  • 举报
回复
课外话题?

想在CSDN里﹐在用自己帳號登錄后﹐右邊的窗口出現 在专家门诊---我的問題
方便看到自己提過的問題﹐怎么設?

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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