开发文章

WM_NCCALCSIZE 消息

WM_NCCALCSIZE

使用方法可以查看 本站 非客户区大小的修改(窗体或控件) 文章
WM_NCCALCSIZE消息在需要计算窗口客户区的大小和位置时发送。通过处理这个消息,应用程序可以在窗口大小或位置改变时控制客户区的内容。
 
LRESULT CALLBACK WindowProc(
  HWND hwnd,       
// handle to window
  UINT uMsg,       // WM_NCCALCSIZE
  WPARAM wParam,   // validation flag (BOOL)
  LPARAM lParam    // data (LPNCCALCSIZE_PARAMS or LPRECT)
);


 

参数
·wParam
       wParam为TRUE时,说明应用程序应该指定客户区哪一部分包含有效的信息。
       系统把有效信息拷贝到新客户区内的指定区域。
 
       wParam为FALSE时,应用程序无需指定客户区的有效部分。
      
·lParam
       wParam为TRUE时,lParam指向一个NCCALCSIZE_PARAMS结构。该结构包含应用程序可用于计算客户区新的大小和位置的信息。
      
       wParam为FALSE时,lParam指向一个RECT结构。进入时,该结构包含了建议的窗口矩形。返回时,该结构应该包含窗口客户区的屏幕坐标。
      
·返回值
       如果wParam为FALSE,应该返回0。
       如果wParam为TRUE,应该返回0,或下列值的组合。
      
       ·WVR_ALIGNTOP, WVR_ALIGNLEFT,WVR_ALIGNBOTTOM
       这些值,用于表示窗口客户区应该相对窗口的新位置适当地对齐。比如,要把客户区对齐到左下角,返回       WVR_ALIGNLEFT|WVR_ALIGNBOTTOM。
 
       ·WVR_HREDRAW, WVR_VREDRAW
       当客户区矩形水平或垂直改变大小时,窗口要完全重画。它们类似于CS_HREDRAW和CS_VREDRAW。
 
       ·WVR_REDRAW
       导致整个窗口重画。相当于WVR_HREDRAW|WVR_VREDRAW。
      
       ·WVR_VALIDRECTS
       此值表示函数返回时,NCCALCSIZE_PARAMS结构中rgrc[1]和rgrc[2]成员分别包含有效的目标区域矩形和源区域矩形。系统把这些矩形组合起来以计算要保留的窗口区域。系统拷贝源矩形中的窗口图象,然后剪切放入目标矩形中。两个矩形都用相对父窗口的坐标或屏幕坐标来表示。
       这个返回值允许应用程序实现更加精细的客户区保留策略,如果中心对齐或保留客户区的一个子集。
      
       如果wParam为TRUE而程序返回0,原有的客户区被保留并对齐到新客户区的左上角。
      
注释
       窗口根据是否指定了CS_HREDRAW或CS_VREDRAW类风格而可能被重画。这是DefWindowProc函数对此消息的默认的,为保持后向兼容而做的处理(以及通常的客户区矩形计算)。
 

上一篇:WM_INITMENUPOPUP 消息

下一篇:返回列表

文章信息

发布时间:2010-09-05

发布者:aquwcw

浏览次数: