精易论坛

标题: 修改窗口标题栏高度,求个示例 [打印本页]

作者: vqzhanshi2    时间: 2022-8-12 23:08
标题: 修改窗口标题栏高度,求个示例
求个修改窗口标题栏高度的示例
这是网上找的,窗口消息看不太懂;或者有没有更好的方法,求个示例
——————————————————————————————————————————————————
case WM_NCCALCSIZE:

ProcNCCalcSize(hWnd,message,wParam,lParam);
int ProcNCCalcSize(HWND hWnd, UINT message, WPARAM wParam, LPARAM
lParam)

{
int nTHight = 30; //标题栏的高度
RECT    * rc;
rc = (RECT *)lParam;
rc->top    = rc->top + nTHight;
return GetLastError();
}

——————————————————————————————————————————————————
解释:
[color=rgba(0, 0, 0, 0.75)]    处理应用程序接收到的WM_NCCALCSIZE消息,改变客户区在窗口中的位置,从而得到合适标题栏高度。
引用论坛用户【福仔】的解释:

——————————————————————————————————————————————————
变量含义:
    message:WM_NCCALCSIZE
    wParam:TRUE  //不管wParam为FALSE还是为TRUE,都是处理rgrc[0],使其为当前窗口客户区的区域
    lParam:一个指向三个矩形的指针(NCCALCSIZE_PARAMS *)
下面是NCCALCSIZE_PARAMS结构:
    typedef struct tagNCCALCSIZE_PARAMS {
    RECT rgrc[3];
    PWINDOWPOS lppos;
    } NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;

——————————————————————————————————————————————————
原帖:WM_NCCALCSIZE消息处理详解修正(原帖由niesongsong发表)_mycaibo的博客-CSDN博客(修改后)
         WM NCCALCSIZE消息处理详解_ytffhew的博客-CSDN博客(有点问题)


补充内容 (2022-8-12 23:10):
原帖:WM_NCCALCSIZE消息处理详解修正(原帖由niesongsong发表)_mycaibo的博客-CSDN博客(修改后)
         https://blog.csdn.net/mycaibo/article/details/6058209

补充内容 (2022-8-12 23:12):
原帖: WM NCCALCSIZE消息处理详解_ytffhew的博客-CSDN博客(有点问题)
https://blog.csdn.net/ytffhew/article/details/83987483

补充内容 (2022-8-12 23:15):
不用 无边框自己画的 方法

QQ截图20220812224858.png (94.92 KB, 下载次数: 0)

QQ截图20220812224858.png

作者: 大司命    时间: 2022-8-12 23:08

之前我也在找如何修改标题栏高度!不过你提供的这个也没法修改~

  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
oldWndProc = SetWindowLongA (取窗口句柄 (), #GWL_WNDPROC, 到整数 (&WndProc))
子程序名返回值类型公开备 注
WndProc整数型 
参数名类 型参考可空数组备 注
hWnd整数型
uMsg整数型
wParam整数型
lParam整数型
变量名类 型静态数组备 注
xFrame整数型 
yFrame整数型 
nTHight整数型 
rcRECT 
如果真 (uMsg = #WM_NCCALCSIZE )
如果真 (wParam = 1)  ' TRUE
xFrame = 2  ' 左右边框的厚度
yFrame = 2  ' 下边框的厚度
nTHight = 40  ' 标题栏的高度
rc.left = __get (lParam, 0)
rc.top = __get (lParam, 4)
rc.right = __get (lParam, 8)
rc.bottom = __get (lParam, 12)
__set (lParam, 0, rc.left + xFrame)
__set (lParam, 4, rc.top + nTHight)
__set (lParam, 8, rc.right - xFrame)
__set (lParam, 12, rc.bottom - yFrame)

返回 (CallWindowProcA (oldWndProc, hWnd, uMsg, wParam, lParam))
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
SetWindowLongA (取窗口句柄 (), #GWL_WNDPROC, oldWndProc)

作者: vqzhanshi2    时间: 2022-8-12 23:21
不用 无边框自己画的 方法




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4