MDI程序+ShowModal窗口的问题。千山一刀求教!

liang_z 2002-01-05 06:17:50
我的一个MDI程序中用了一个模式窗口,即ShowModal出来一个窗口,
这时系统的任务栏上就有两个窗口的按钮了,
即一个是MDI主程序的,另一个是对话框(ShowModal出来的窗口)的,
如果我在这时用鼠标去点任务栏上MDI主程序的按钮的话,对话框就跑到
MDI主程序的后面去了,我如果才能不让它到后面去?

关键问题在于我的对话框在另一个DLL中,如果在同一个EXE文件中就没有问题了!

其实很多软件都是这种模式,但它们都不会跑到后面去。我想他们也一定有DLL的调用吧。
...全文
122 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zswangII 2002-01-10
  • 打赏
  • 举报
回复
to:liang_z(千山一刀之忍者神龟)
你把简洁的示例代码发到我的邮箱
我现在很想看看
mailto:wjhu111@21cn.com
xyzguan 2002-01-10
  • 打赏
  • 举报
回复
bl
liang_z 2002-01-08
  • 打赏
  • 举报
回复
/
fox2001 2002-01-06
  • 打赏
  • 举报
回复
关注!
zswangII 2002-01-06
  • 打赏
  • 举报
回复
标记先
liang_z 2002-01-05
  • 打赏
  • 举报
回复
UPUP
zwjchina 2002-01-05
  • 打赏
  • 举报
回复
你有没有用Spy等工具看看两种情况下的窗口风格各有什么不同吗?
liang_z 2002-01-05
  • 打赏
  • 举报
回复
只要你的MDI主程序中有一个不是动态LOAD的DLL,这个对话框就会跑到后面去!
也就是说只要你在程序中有一句:
procedure CreateChildForm(MainApp:THandle);stdcall; external 'ChildDll.dll';
连OpenDialog.Execute出来的对话框也是会跑到你的主程序的后面去的!

zwjchina 2002-01-05
  • 打赏
  • 举报
回复
哦!
liang_z 2002-01-05
  • 打赏
  • 举报
回复
但是如果用动态Load就没有这个问题了!
var
H: HWnd;
iMy: procedure(MainApp:THandle);stdcall;
begin
H := LoadLibrary('ChildDll.dll');
if H <> 0 then
begin
iMy:=GetProcAddress(H, 'CreateChildForm');
if Assigned(iMy) then
iMy(Application.handle);
end;
end;
zwjchina 2002-01-05
  • 打赏
  • 举报
回复
我的一点拙见:
在showmodal之前去掉MID窗口的WS_EX_APPWINDOW风格!
showmodal结束之后恢复!
呵呵,方法有点烂呵呵!我都有点不好意思说!
delphi5pack 2002-01-05
  • 打赏
  • 举报
回复
tq&&Gz&&up

828

社区成员

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

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