去除边框
1.把窗口边框改成无边框:
但只这样做会导致无法拖动窗口。
2.在类向导中添加这个消息:OnHcHitTest
3.修改这个消息处理函数的返回值为:HTCAPTION
添加背景图片
1.准备一张 bmp 格式的图片(其他格式我没有实验,可能会有问题),在项目中添加资源,选择 BitMap ,导入:
2.在 OnPaint() 函数中添加如下代码:
// 上面还有一部分代码,是 vs 自动生成的
else
{
//CDialogEx::OnPaint(); // 这是原本的,注释掉
/*
从这里开始是我们自己的代码 ---------------
*/
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect); // 获取对话框长宽
CDC dcBmp; // 定义并创建一个内存设备环境
dcBmp.CreateCompatibleDC(&dc); // 创建兼容性DC
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); // 载入资源中图片
BITMAP m_bitmap; // 图片变量
bmpBackground.GetBitmap(&m_bitmap); // 将图片载入位图中
//将位图选入临时内存设备环境
CBitmap* pbmpOld = dcBmp.SelectObject(&bmpBackground);
//调用函数显示图片StretchBlt显示形状可变
dc.SetStretchBltMode(COLORONCOLOR); // 防止 bmp 图片压缩后失真
dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, SRCCOPY);
}
注意:背景图片在窗口拉伸时会失真,但配合无边框使用时不需要在意,因为本身无边框窗体不支持拉伸窗口。
还有一点,这样做需要手动添加关闭按钮,但 bmp 格式文件图片不透明所以就很丑,但使用 png 格式的图片要使用 GDI+ 库。
转载:https://blog.csdn.net/Simon798/article/details/115836089
查看评论