关于无边框对话框实现鼠标拖动和鼠标拖拽缩放功能,请查看另一篇文章:https://blog.youkuaiyun.com/youyicc/article/details/87872927
实现碰屏幕边界最大化功能很简单,但是网上很难找到对应的资料,在此记录一下,方便自己和其他人。
第一步:实现对话框的WM_NCCALCSIZE消息,代码如下:
void CTestDlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
LONG style = GetWindowLong(m_hWnd, GWL_STYLE);
if ((style & WS_THICKFRAME) == 0)
SetWindowLong(m_hWnd, GWL_STYLE, style | WS_THICKFRAME);
}
第二步:在OnInitDialog()函数中添加一句话:
ModifyStyle(0, WS_MINIMIZEBOX | WS_MAXIMIZEBOX);
完成,鼠标拖动对话框碰到屏幕边界后能最大化,同时也可以拖动恢复正常大小。