【问题标题】:Win32: How to create a bordless popup windowWin32:如何创建无边框弹出窗口
【发布时间】:2012-01-05 22:00:27
【问题描述】:

Win32 API 提供了许多用于创建窗口的样式,我正在寻找一种可以从我使用此代码创建的窗口中删除单像素边框的样式:

DWORD dwExtStyle = 0;
DWORD dwStyle = WS_POPUPWINDOW;

    m_hWnd = CreateWindowEx(
    dwExtStyle,
    className,
    windowName,
    dwStyle,
    300,
    300,
    100,
    100,
    NULL,
    NULL,
    hInstance,
    NULL);

ShowWindow(m_hWnd, SW_SHOW);

我得到了结果:

哪些标志组合可以去除窗口的黑色边框。

【问题讨论】:

    标签: c++ winapi user-interface win32gui


    【解决方案1】:

    只需使用WS_POPUP 而不是WS_POPUPWINDOW

    WS_POPUPWINDOW实际上是一组标志:

    #define WS_POPUPWINDOW (WS_BORDER | WS_POPUP | WS_SYSMENU)
    

    WS_BORDER 标志是您的黑色方块的负责人。

    【讨论】:

    • 谢谢。我尝试仅使用 WS_POPUP 创建一个窗口,但桌面上没有任何窗口。比我发现我创建了一个带有 NULL 背景画笔的窗口。奇怪的是,当我使用 WS_POPUPWINDOW 创建一个窗口(出现白色)并且我正在创建一个带有 WS_POPUP 的窗口时,NULL-brush 被忽略了,背景画笔正常使用。
    • @MaxFX 背景画笔和 WS_POPUPWINDOW 不应该相关,AFAIK。但请注意,如果您的窗口不重绘自身 (WM_PAINT) 并且没有背景画笔或边框,它的行为就像变色龙一样,将任何图像保留在它之前的屏幕中,并且很容易错过。
    猜你喜欢
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2014-05-26
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多