如何取消其他程序窗口的Showmodal模式??

xbxsoft 2007-04-20 02:40:11
我要用程序a发信息让程序B的form1窗口取消Showmodal模式,并隐藏,不知道有什么办法, 程序b和form1窗口的句柄已经获得了。用按个命令参数能让form1窗口的showmodal模式取消,并隐藏呢?有会的大虾不?
...全文
438 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuasoft 2007-05-06
  • 打赏
  • 举报
回复
试了一下楼上的代码,怎么不行啊?按道理应该是可以的,因为这个消息是取消正在运行的模态。

楼上给讲解一下?
海天 2007-05-06
  • 打赏
  • 举报
回复


SendMessage(FormHandle, WM_CANCELMODE, 0, 0);
sdzeng 2007-05-06
  • 打赏
  • 举报
回复
VCL里Form.ShowModal时,其它窗体被禁用的过程是这样子:
TCustomForm.ShowModal——DisableTaskWindows——EnumThreadWindows——DoDisableWindow

上面例子是照着这个过程写了一个“反过程”
sdzeng 2007-05-06
  • 打赏
  • 举报
回复
//form1
procedure TForm1.Button1Click(Sender: TObject);
var
f2 : TForm2;
begin
f2 := TForm2.Create(Self);
f2.ShowModal;
f2.Free;
end;

//form2
function DoEnableWindow(Window: HWnd; Data: Longint): Bool; stdcall;
begin
if IsWindowVisible(Window) and
(not IsWindowEnabled(Window)) then
begin
EnableWindow(Window, True);
end;
Result := True;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
var
h : THandle;
WindowList : Pointer;
begin
EnumThreadWindows(GetCurrentThreadID,@DoEnableWindow,0);
Timer1.Enabled := False;
end;
lihuasoft 2007-05-05
  • 打赏
  • 举报
回复
向VB版的暴风雨学习的:

模态窗口显示时,其owner window是被Disable的,所以模态窗口才呈现“模态”,所以只要将模态窗口的owner window设置为enable即可实现改变其模式显示状态


var
H : HWND;
begin
H := FindWindow(nil, PChar('模态窗体的OwnerWindow的标题'));//H 即Owner的句柄
EnableWindow(H, True);
end;
xbxsoft 2007-04-20
  • 打赏
  • 举报
回复
晕。。。。。
chenzhuo 2007-04-20
  • 打赏
  • 举报
回复
SORRY,那帮不了你!
xbxsoft 2007-04-20
  • 打赏
  • 举报
回复
都不行呀,要取消 Showmodal 模式,但不能关闭
chenzhuo 2007-04-20
  • 打赏
  • 举报
回复
SendMessage(FormHandle, WM_CLOSE, 0, 0);
SendMessage(FormHandle,CM_VISIBLECHANGED,ord(ture),0);
chenzhuo 2007-04-20
  • 打赏
  • 举报
回复
把他关闭之后再用非模态窗体打开就行啦!
repeat
Application.HandleMessage;
if Application.FTerminate then ModalResult := mrCancel else
if ModalResult <> 0 then CloseModal;
until ModalResult <> 0;
ShowModal的其中一部分代码,你说他要怎么取消!
xbxsoft 2007-04-20
  • 打赏
  • 举报
回复
晕,不能关闭呀,我知道如何关闭的,只能把窗口的Showmodal取消,然后隐藏该窗口
nadel 2007-04-20
  • 打赏
  • 举报
回复
取消模式窗体并隐藏,这和关闭该窗体一个意思吧?直接发WM_CLOSE消息就可以了。
SendMessage(FormHandle, WM_CLOSE, 0, 0);
2. xhEditor进阶使用 2.1. 进阶使用指导 2.2. 初始化参数列表 2.3. API函数接口列表 2.4. 上传程序开发规范 2.5. 插件开发指南 2.6. 皮肤设计指南 2.7. 关于二次开发 2.1. 进阶使用指导 阅读本章节请先阅读:xhEditor入门基础,若你已经熟悉xhEditor的基本使用,请往下继续。 xhEditor提供两种方式初始化编辑器: 方法1:利用class属性来初始化和传递各种初始化参数,例: class="xheditor {skin:'default'}" 方法2:利用xhEditor提供的jQuery插件接口来实现对特定textarea的初始化和传递参数,例: $('#elm1').xheditor(); 或者 $('#elm1').xheditor({tools:'mini'}); 特别说明:两种初始化方法只能选择其中一种使用,如果两种方法的代码同时存在页面中,方法2的代码不会有任何效果。 我们更倾向于推荐大家使用方法1,因为更简单易用,不涉及任何的Javascript代码。通过简单的参数设置即可定制各种效果的编辑器界面,简单易用且功能强大。 如果想实现更加复杂的交互应用,或者希望xhEditor编辑器能够和自己的Javascript代码实现互相访问,那么你可以选择使用方法2,相对具有更大的自由空间。 xhEditor也提供了即时的卸载编辑器方法: $('#elm1').xheditor(false); 2.2. 初始化参数列表 初始化参数示例代码: $('#elm1').xheditor({tools:'full',skin:'default',showBlocktag:true,internalScript:false,internalStyle:false,width:300,height:200,loadCSS:'http://xheditor.com/test.css',fullscreen:true,sourceMode:true,forcePtag:true,upImgUrl:"upload.php",upImgExt:"jpg,jpeg,gif,png"}); 初始化参数列表: tools:自定义工具按钮 参数值:full(完全),mfull(多行完全),simple(简单),mini(迷你) 或者自定义字符串,例如:'Cut,Copy,Paste,Pastetext,|,Source,Fullscreen,About' 完整按钮表: |:分隔符 /:强制换行 Cut:剪切 Copy:复制 Paste:粘贴 Pastetext:文本粘贴 Blocktag:段落标签 Fontface:字体 FontSize:字体大小 Bold:粗体 Italic:斜体 Underline:下划线 Strikethrough:中划线 FontColor:字体颜色 BackColor:字体背景色 SelectAll:全选 Removeformat:删除文字格式 Align:对齐 List:列表 Outdent:减少缩进 Indent:增加缩进 Link:超链接 Unlink:删除链接 Anchor:锚点 Img:图片 Flash:Flash动画 Media:Windows media player视频 Hr:插入水平线 Emot:表情 Table:表格 Source:切换源代码模式 Preview:预览当前代码 Print:打印 Fullscreen:切换全屏模式 About:关于xhEditor skin:皮肤风格选择 参数值:default(默认风格),o2007blue(Office 2007 蓝色),o2007silver(Office 2007 银色),vista(Vista),nostyle(NoStyle) layerShadow:阴影的深度(按钮面板和模式窗口的背景阴影) 参数值:0(不显示阴影),大于0的数值(显示阴影并设置阴影的深度) clickCancelDialog:点击任意位置取消按钮面板功能 参数值:默认true(开启点击取消功能),false(关闭点击取消功能,必需要点击“取消”按钮才能关闭按钮面板) showBlocktag:显示段落标签 参数值:true(显示段落标签),false(不显示) linkTag:样式链接link标签保留状态 参数值:true(保留样式链接link标签),false(清理样式链接link标签) internalScript:内部JS代码保留状态 参数值:true(保留内部JS代码),false(清理内部JS代码) inlineScript:内联JS代码保留状态 参数值:true(保留内联JS代码)
软件介绍xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化XHTML编辑器,基于网络访问并且兼容IE 6.0-8.0,Firefox 3.0,Opera 9.6,Chrome 1.0,Safari 3.22。Features(特点): Small:初始加载5个文件,包括:1个js(36k)+2个css(6k)+2个图片(4k),总共46k。若js和css文件进行gzip压缩,可以进一步缩减为18k左右。 Fast:基于jQuery引擎开发,提供高效的代码执行效率 Simple:简单的调用方式,加一个class属性就能将您的textarea立马变成一个功能丰富的可视化编辑器。 Word:实现Word代码自动检测并清理,提供高效完美的Word代码过滤方案,生成代码最优化精简,但是却不丢失任何细节效果。 UBB: 提供完美的UBB可视化编辑解决方案,在您获得安全高效代码存储的同时,又能享受可视化编辑的便捷 ver 0.9.7 Change(2009-7-21) 1.调整:标签显示功能由原先的显示在左上方并增高8像素,改为显示在右上方且不增高 2.调整:编辑器内部的settings变量由原先的内部变量改为公有变量,以方便从外部动态的对参数进行修改 3.修正:修正了Chrome浏览器下字体效果转换错误的问题,此问题仅出现在0.9.6版中 4.修正:在非WebKit内核下,使用3个字符的16进制颜色值无效的问题进行了修正,例:moved>aaa 5.修正:appendHTML和pasteHTML两个函数添加的图片或者链接,相对地址变绝对地址问题的修正 6.修正:XHTML格式化功能进一步完善,例:aaa,修正前<bbb这部分内容会消失,修正后此BUG消失 7.修正:之前表情插入后默认是选中当前表情,现修正为插入表情后光标定位在表情之后,这样便于在后面继续插入新表情 8.添加:ajax上传功能模块化,使链接、动画和视频在不增加代码大小的情况下都具备上传功能 9.添加:在readonly只读模式下除了全屏和关于按钮可用,其它所有按钮都禁用,并且内容不可编辑,可通过toggleReadonly接口来进行切换状态 10.添加:showModal接口,模仿桌面程序模式窗口,必需完成窗口内事件或者关闭窗口才能返回窗口,本程序已扩展到ajax上传模块中,并可在插件中调用

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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