AdjustWindowRect

函数功能:该函数依据所需客户矩形的大小,计算需要的窗口矩形的大小。计算出的窗口矩形随后可以传递给CreateWindow函数,用于创建一个客户区所需大小的窗口。
函数原型:BOOL AdjustWindowRect(LPRECT lpRect ,DWORD dwStyle,BOOL bMENU);
参数:
lpRect:指向RECT结构的指针,该结构包含所需客户区域的左上角和右下角的坐标。函数返回时,该结构容纳所需客户区域的窗口的左上角和右下角的坐标。
dwStyle:指定将被计算尺寸的窗口的窗口风格。
bMenu:指示窗口是否有菜单。如窗口有菜单,则设为0x1/*_TRUE*/(非零)[1]
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。获取错误信息,参看GetLastError。
备注:客户矩形是指完全包含一个客户区域的最小矩形;窗口矩形是指完全包含一个窗口的最小矩形,该窗口包含客户区与非客户区。
当一个菜单条下拉出两行或更多行时,AdjustWindowRect函数不增加额外的空间。
速查:Windows NT:3.1以上版本:Windows:95以上版本:Windows CE:不支持;头文件:winuser.h;库文件:user32.lib。
 

AdjustWindowRect需要注意的事项

 

当我们需要依据所需客户矩形的大小,计算需要的窗口矩形的大小的时候会用到AdjustWindowRect。

也许是以前没有碰到, AdjustWindowRect 的第二个参数也就是creatwindow的窗口风格参数,不能是WS_SYSTEMMENU , 当这个风格的时候AdjustWindowRect输出的矩形会起不到应有效果 , 其他风格情况未曾查看.

目前是这样指定的:

   SetRect( &rc, 0, 0, IC_WINDOWS_WIDTH, IC_WINDOWS_HEIGHT );
   AdjustWindowRect( &rc,WS_OVERLAPPEDWINDOW&(~WS_MAXIMIZEBOX)&(~WS_SIZEBOX),FALSE);


   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW&(~WS_MAXIMIZEBOX)&(~WS_SIZEBOX),0,0,(rc.right - rc.left),(rc.bottom-rc.top), NULL, NULL, hInstance, NULL);

原文地址:https://www.cnblogs.com/fwycmengsoft/p/3023551.html