窗体已用ShowModal显示,其它窗口和控件都无法使用,不知有没有API函数可将ShowModal显示的窗口转为Show显示的窗口模式?
这类窗体好像不能通过设置Parent的方法实现?

解决方案 »

  1.   

    晕吖,直接用show就行啦. 如form1.show或者用 ShowWindow 这个函数吧
      

  2.   

    楼主可能说的是外部程序中的窗体显示问题吧,否则是用不到API的。如果真的是想改变外部程序中窗体的显示,可以考虑用hook api的方法,试着拦截showmodal的消息,然后改发,也许能解决问题。我也不太懂,仅作参考吧
      

  3.   

    哎,要是能直接Show就好办了,现在的情况是这个窗体已经是用ShowModal显示出来的,不想关闭它,但又不希望它挡住后面的窗体。
    如果在程序内部实现不了的话,有外部实现的方法也行啊。
      

  4.   

    是希望别人的exe(没有源码)的一个form不要showmodal,而是show吗?否则,如果是有源代码,的确只要把showmodal改为show就行了
      

  5.   

    是控制外部程序ShowModal的窗体
      

  6.   

    我最近也遇到类似的问题,我在自己的程序里面用CreateProcess打开了windows的一个看图工具,而且是直接打开一张网络硬盘上的图片,这个时候系统会提示该图片是只读,是否需要打开本地副本的对话框,我想做的是模拟一个keydown事件直接点enter(要不然每次打开都会提示那个很烦人的提示),而这个时候实际上外部程序已经中断在那儿,程序似乎没法继续执行下去,哪位大人晓得这个问题该如何解决?另外加分
      

  7.   

    ShowModal一般是通过disable parent window然后在ShowModal中重新实现消息处理循环(也许存在消息过滤)实现的, 所以最简单的方法是用EnableWindow重新激活parent window. 不过这样做可能存在隐患, 因为激活后parent window所有消息仍然是通过ShowModal中的消息处理过程分发的, 如果那里有消息过滤存在那么可能部分消息parent window收不到
      

  8.   

    Form1.FormStyle := fsStayOnTop;
    Form1.Show;