Win32无边框窗口

该博客介绍了如何利用C++、Direct3D12及DirectComposition技术,实现一个透明且可拖动、调整大小的无边框Windows窗口。内容涉及到窗口透明度设置以及结合Direct3D12进行图形绘制的方法。
部署运行你感兴趣的模型镜像

窗口是透明的,支持拖动或调整大小,请用Direct3D12和DirectComposition进行绘制。

#include <Windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_CREATE:
		//OnInit(hWnd);
		break;
	case WM_PAINT:
		//OnRender();
		break;
	case WM_NCCALCSIZE:
		if (wParam)
		{
			if (IsZoomed(hWnd))//最大化时修正客户区
			{
				NCCALCSIZE_PARAMS* lp = (LPNCCALCSIZE_PARAMS)lParam;
				lp->rgrc[0].left += 8;
				lp->rgrc[0].top += 8;
				lp->rgrc[0].right -= 8;
				lp->rgrc[0].bottom -= 8;
			}
		}
		return 0;//去除非客户区
	case WM_NCHITTEST:
		if (!IsZoomed(hWnd))//调整窗口大小
		{
			int x = 8;//边框宽度
			RECT rc; GetClientRect(hWnd, &rc);//客户区矩形
			POINT pt; GetCursorPos(&pt); ScreenToClient(hWnd, &pt);//鼠标位置
			if (pt.x < rc.left + x)
			{
				if (pt.y < rc.top + x)return HTTOPLEFT;
				if (pt.y >= rc.bottom - x)return HTBOTTOMLEFT;
				return HTLEFT;
			}
			if (pt.x >= rc.right - x)
			{
				if (pt.y < rc.top + x)return HTTOPRIGHT;
				if (pt.y >= rc.bottom - x)return HTBOTTOMRIGHT;
				return HTRIGHT;
			}
			if (pt.y < rc.top + x)return HTTOP;
			if (pt.y >= rc.bottom - x)return HTBOTTOM;
		}
		return HTCAPTION;//拖动窗口
		break;
	case WM_DESTROY:
		//OnDestroy();
		PostQuitMessage(0);
		break;
	}
	return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}

int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
	WNDCLASS wc = { 0 };
	wc.hInstance = hInstance;
	wc.lpfnWndProc = WndProc;
	wc.lpszClassName = L"无边框窗口";
	RegisterClassW(&wc);

	HWND hWnd = CreateWindowExW(WS_EX_NOREDIRECTIONBITMAP, wc.lpszClassName, nullptr, WS_OVERLAPPEDWINDOW, 183, 84, 1000, 600, nullptr, nullptr, hInstance, nullptr);
	ShowWindow(hWnd, nShowCmd);
	UpdateWindow(hWnd);

	MSG msg;
	while (GetMessageW(&msg, nullptr, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessageW(&msg);
	}
	return 0;
}

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值