msgbox调用VB内置的窗口大家都用过,任务栏里只有原有程序的图标,并且必须处理完MSGBOX弹出的窗口才能再操作原程序的窗口
我想在想实现form1调用fomr2,但API学得烂不知道怎么实现
1.任务栏里只有fomr1的图标,如果弹出了form2,那么点击图标会弹出form2,form2在form1的上方(非置顶),
2.form2弹出后必须处理完(关掉)后,才能操作form1
说简单点就是msgbox弹出的窗口那样,只不过现在弹出的窗口内容由我定
请各位发表高见,别告诉我用form2.show

解决方案 »

  1.   

    为啥不能用Show方法?form2.show vbmodal,me这样不能满足你的要求?
      

  2.   


    Private Declare Function CreateDialogIndirectParam Lib "user32" Alias "CreateDialogIndirectParamA" (ByVal hInstance As Long, lpTemplate As DLGTEMPLATE, ByVal hWndParent As Long, ByVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Long
    确实意义不大,不如直接用vb的show方法这个就是创建模式窗口的api
      

  3.   

    form2.show vbmodal,me 的方法不能实现
      

  4.   

    第二点要求
    就像语句
    msgbox "hello"
    弹出的窗口如果你不点确定的话你的鼠标键盘是无法操作form的(不是用的.enable=false的方法)
    你操作别的程序再切回到这个程序时,那个窗口任然在哪里除非你点了确定或强制结束进程
      

  5.   

    1楼正解,参考MSDN:
     
    Show 方法
          用以显示 MDIForm 或 Form 对象。不支持命名参数。语法object.Show style, ownerformShow 方法的语法包含下列部分:部分 描述 
    object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则与活动窗体模块关联的窗体缺省为 object。 
    Style 可选的。一个整数,它用以决定窗体是模式还是无模式 。如果 style 为 0,则窗体是无模式的;如果 style 为 1,则窗体是模式的。 
    ownerform 可选的。字符串表达式,指出部件所属的窗体被显示。对于标准的Visual Basic 窗体,使用关键字 Me。 
    说明如果调用 Show 方法时指定的窗体没有装载,Visual Basic 将自动装载该窗体。当 Show 在显示无模式窗体时,随后遇到的代码则要执行。当 Show 在显示模式窗体 (modal form) 时,则随后的代码直到该窗体被隐藏或卸载时才能执行。当 Show 在显示模式窗体时,除了模式窗体中的对象之外不能进行输入(键盘或鼠标单击)。对其它窗体进行输入前程序必须隐藏或卸载模式窗体(通常是处于响应用户某些操作状态)。MDIForm 不能是形式的。在模式窗体显示时,虽然应用程序中的其它窗体失效,但其它应用程序不会失效。应用程序的启动窗体在其 Load 事件调用后会自动出现。下面的例子说明如何使用ownerform 参数:Private Sub cmdShowResults_Click()
       ' 显示模式窗体 frmResults.
       frmResults.Show vbModal, Me
    End Sub
      

  6.   

    你的方法我忘记加参数vbmodal了,是说没效果哦,可以了哦,谢谢