none
MDI程序,如何缩小CChildFrame的边框? RRS feed

  • 问题

  • 现在的MFC MDI程序,每个CChildFrame中为CFormView。如图。

    缺省工程向导生成的CChildFrame,边框比较宽,然后CFormView也是嵌入风格的,很难看。

    如何重载CChildFrame,缩小Frame的边框,最好也能缩小Title标题框。


    2017年3月14日 11:38

全部回复

  • 有没有思路?
    2017年3月15日 5:14
  • Hi BruceLiu_sh,

    感谢在MSDN论坛发帖。

    >>现在的MFC MDI程序,每个CChildFrame中为CFormView。如图。

    缺省工程向导生成的CChildFrame,边框比较宽,然后CFormView也是嵌入风格的,很难看。

    如何重载CChildFrame,缩小Frame的边框,最好也能缩小Title标题框。

    MDI应用程序中更改子窗口的窗口样式需要更多的工作。 默认情况下,使用应用程序向导创建的MDI应用程序使用在MFC中定义的默认CMDIChildWnd类。要更改MDI子窗口的窗口样式,必须从CMDIChildWnd派生一个新类,并将项目中对CMDIChildWnd的所有引用替换为对新类的引用。覆盖从CMDIChildWnd派生的类中的PreCreateWindow函数。例如:

    BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
       // Create a child window without the maximize button 
        cs.style = WS_BORDER; //窗口具有细线边框 
    
       return CMDIChildWnd::PreCreateWindow(cs);
    }

    详细内容可以参考以下文档。

    https://msdn.microsoft.com/en-us/library/x07xt611.aspx

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年3月15日 5:52
  • 多谢,我先试试看
    2017年3月16日 1:20
  • 多谢指导,现在去掉了粗边框。

    但是FormView与边框直接还有一个嵌入的凹陷风格,这个怎么去掉?想要FormView与边框直接的平面过度,不要任何风格,就像对话框那样。

    2017年3月16日 2:19
  • 去掉了WS_THICKFRAME,边框变窄了,但是也不能缩放了。

    加上WS_SIZEBOX,能缩放但是边框又变粗了。查看定义,发现

    #define WS_SIZEBOX WS_THICKFRAME。

    有没有又可以缩放,有能窄边框的办法?

    2017年3月16日 2:34