一个 MFC 对话框程序,我可以在主对话框上新建另一个“子”对话框,它的类型可以是“WS_POPUP”,可以将其设置为透明,但我自己纯粹调用 API 函数却不能在其上建立 “WS_POPUP” 的“子”窗口,为什么样?我原本的目的是在一个不透明的窗口上再新建一个透明的子窗口,现在却不能实现,各位有什么办法?谢谢!

解决方案 »

  1.   

    在对话框中嵌入对话框不是一个好方法.请下载我的"MultiDialog.rar"
      

  2.   


    ----------------------------------------------------------------------------------
    "MultiDialog.rar" 在哪儿下载?我到觉得对话框上创建新的对话框较方面,特别是多窗口情况,随用随建。
      

  3.   

    "MultiDialog.rar" 没成功上传,改"MultiDialog.zip" 
      

  4.   

    见下
    http://download.csdn.net/user/schlafenhamster
      

  5.   


    感谢你所作的工作,不过你没理解我的意思。如果仅是几个对话框之间的切换就不需要这么麻烦了。说到多个对话框共存问题,我要的是在一个已有窗口上根据需要随时创建、隐藏或销毁其它窗口,一个主窗口上可能同时会出现许多子窗口,它们随时显示、隐藏、创建、销毁,现在采用的方式是使用 MFC ,在已有对话框上动态 new 一个 CDialog,然后 Create 它,使其以非模态形式显示,基本上可行了,一点小问题是操作系统不能很好的区分各非模态对话框所属区域,点击非模态对话框其并不“激活”,需要外界手动调整“激活”,调整后各非模态对话的 WM_PAINT 消息不正常,子窗口被覆盖区域重新显示时“不一定”有重绘消息到来,偶尔出现不重画的问题。--------- 这是我以前提过的一个问题,个人以为可能与操作系统内部的对话框窗口消息处理过程有关!我现在的问题上 new/Create 一个 CDialog 时可以设定为 WS_POPUP,可以设定其扩展为 WS_EX_LAYERED,可以对其调用 SetLayeredWindowAttributes 使其产生半透明效果,也就是在一个不透明的窗口上又加了一个“半透明”的窗口。事实上 SetLayeredWindowAttributes 不能应用于子窗口,此处 CDialog 事实上已经不是子窗口了!问题是我现在就想用 API 做这个“半透明”出来,难道必须新建另一个顶级窗口出来吗?
      

  6.   

    如果你这样接着搞下去,可能问题会更多.最后退回到WIN32编程去,所有窗口都你管.