求解释下面的代码 本人初学Delphi,下面这段代码因为比较底层,又没有注释,所以看不明白,想请高手解 5

以下是Delphi2010中用来解决弹出的窗口不能被显示到最前端的代码,虽然知道大体功能但不清楚为什么要这么做procedureForm1.CMShowingChange... 以下是Delphi2010中用来解决弹出的窗口不能被显示到最前端的代码,虽然知道大体功能但不清楚为什么要这么做
procedure Form1.CMShowingChanged(var Msg: TMessage);
var
hWnd: THandle;
dwID1, dwID2: DWORD;
Buf: ^DWORD;
begin
inherited;

if not Visible then Exit;
hWnd := GetForegroundWindow;
dwID1 := GetWindowThreadProcessId(hWnd, nil);
dwID2 := GetCurrentThreadId();

AttachThreadInput(dwID2, dwID1, True);
Buf := GetMemory(SizeOf(DWORD));
try
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, Buf, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, 0);

SetForegroundWindow(Application.Handle);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Buf, 0);
AttachThreadInput(dwID2, dwID1, False);
finally
FreeMemory(Buf);
end;
end;
展开
 我来答
mischemeXL
2012-10-28 · TA获得超过280个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:166万
展开全部
通过线程ID来重画窗口。
这是个重载CM_SHOWINGCHANGED消息处理。
函数体中,是一些API函数,用来获取线程ID,以及获取背景桌面,重新画背景桌面的功能。
需要了解一点win32的api和消息机制。
祝你工作愉快,学习进步。
区拉文70
2012-10-24 · TA获得超过146个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:145万
展开全部
都是win32的API,你百度下就知道意思了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
板夜天2U
2012-10-26
知道答主
回答量:22
采纳率:0%
帮助的人:12.1万
展开全部
win32的API,查MSDN,很容易看明白的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式