CreateWindowEx创建有边框和无边框窗口

无边框窗口

m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, m_applicationName, m_applicationName,WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_POPUP,posX, posY, screenWidth, screenHeight, NULL, NULL, m_hinstance, NULL);

有边框窗口

m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, m_applicationName, m_applicationName, WS_OVERLAPPEDWINDOW, posX, posY, screenWidth, screenHeight, NULL, NULL, m_hinstance, NULL);

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用SetWindowLong函数来给无边窗口增加边框。以下是一个示例代码: ```cpp #include <Windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_NCCALCSIZE: { // 获取窗口边框尺寸 NCCALCSIZE_PARAMS* params = reinterpret_cast<NCCALCSIZE_PARAMS*>(lParam); params->rgrc[0].left += 4; params->rgrc[0].top += 4; params->rgrc[0].right -= 4; params->rgrc[0].bottom -= 4; return 0; } case WM_NCHITTEST: { // 设置鼠标在窗口边框上时显示调整大小的光标 LRESULT hit = DefWindowProc(hwnd, msg, wParam, lParam); if (hit == HTCLIENT) return HTBORDER; else return hit; } } return DefWindowProc(hwnd, msg, wParam, lParam); } int main() { // 创建窗口类 WNDCLASSEX wc = { sizeof(WNDCLASSEX) }; wc.lpfnWndProc = WndProc; wc.hInstance = GetModuleHandle(nullptr); wc.lpszClassName = L"BorderWindow"; // 注册窗口类 RegisterClassEx(&wc); // 创建窗口 HWND hwnd = CreateWindowEx( 0, L"BorderWindow", L"无边框窗口", WS_POPUP | WS_VISIBLE, 100, 100, 400, 300, nullptr, nullptr, GetModuleHandle(nullptr), nullptr); // 设置窗口样式 LONG_PTR style = GetWindowLongPtr(hwnd, GWL_STYLE); SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_BORDER); // 消息循环 MSG msg; while (GetMessage(&msg, nullptr, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return static_cast<int>(msg.wParam); } ``` 在上述代码中,我们通过在窗口过程(WndProc)中处理WM_NCCALCSIZE和WM_NCHITTEST消息来实现给无边框窗口增加边框的效果。在WM_NCCALCSIZE消息中,我们修改窗口边框尺寸,使得客户区(即窗口的工作区域)相应地减小。在WM_NCHITTEST消息中,我们设置鼠标在窗口边框上时显示调整大小的光标。 请注意,以上代码仅为示例,您可能需要根据自己的需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值