根据 MSDN 中所说,创建的 MDI 多文档界面的 client 窗口默认大小是覆盖框架窗口的整个客户区,实事也是这样,真的会覆盖整个客户区。现在希望它不要覆盖整个客户区,而想自定义它的大小,但是从 MSDN 中找不到方法,不知道怎么做才可以呢?用 SDK。试过在 WM_SIZE 消息中设置 client 窗口大小,但是不行,一闪而过,又覆盖了整个客户区。MFC 的源代码实在看不懂。

解决方案 »

  1.   

    工具栏、状态栏创建以后,用MoveWindow移动到边上,自然占用了Client的区域,Client自然小了。要用宽边,也可以创建空白的工具栏来模拟。
    事实上,所谓客户区大小可以不管,类似MFC,在客户区创建一个视图窗口,这个窗口的大小可以视为客户区,所有客户区消息转发给这个视图窗口,这样就大小随意了。
      

  2.   

    不是你所说的那样,创建了工具栏等,并不会改变 client 区域的大小。我就是先创建了工具栏,但是创建 MDIClient 窗口时,Client 窗口覆盖了工具栏、状态栏、还有几个其他窗口,全部无法显示。
    你可以尝试一下。你后面说的我没想到过,应该可行,回去试一下。
      

  3.   

    Mackz 兄,发现你的第二种方法并不成功。在客户区中创建一个窗口作为 frame 窗口,没问题,可以建立 clinet 窗口和 child 窗口,但是这样存在一个问题,child 文档窗口最大化后,还原大小、最小化、关闭三个安装没有了,所以这种方法不行。这个帖子已经结贴了,我再开一个新的帖子继续提问。