CWnd::OnNcCalcSize

afx_msg void OnNcCalcSize( BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp );

参数:
bCalcValidRects指定应用程序是否需要指定客户区的哪个部分包含了有效信息。Windows将把有效信息拷贝到新客户区的指定位置。如果这个参数为TRUE,则应用程序必须指定客户区的哪个部分有效。
lpncsp指向一个NCCALCSIZE_PARAMS数据结构,其中包含了应用程序可用于计算CWnd矩形(包括客户区、边框、标题和滚动条等)的新大小和位置的信息。

说明:
当客户区的大小和位置需要重新计算时,框架调用这个成员函数。通过处理这个消息,应用程序可以在窗口的大小和位置发生变化时控制窗口客户区的内容。
不论bCalcValidRects的值是什么,NCCALCSIZE_PARAMS结构的rgrc结构成员所指向的数组中的第一个矩形中包含了窗口的坐标。对于一个子窗口,这个坐标是相对于父窗口的客户区的。对于顶层窗口,该坐标是屏幕坐标。应用程序应当修改rgrc[0]矩形以反映客户区的大小和位置。
rgrc[1]和rgrc[2]矩形仅当bCalcValidRects为TRUE时有效。在这种情况下,rgrc[1]矩形中包含了被移动或改变大小的窗口的坐标。rgrc[2]矩形中包含了窗口被移动之前的客户区坐标。所有的坐标都是相对于父窗口或屏幕的。缺省的实现根据窗口特征计算客户区的大小(是否有滚动条,菜单等),并且将结果放入lpncsp。
注意 框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。

请参阅:WM_NCCALCSIZE, CWnd::MoveWindow, CWnd::SetWindowPos