2011-11-24 142 views
2

的Win32 API提供了窗口创造了许多风格和我在寻找一种风格,可以从我使用此代码创建的窗口中删除一个像素的边框:的Win32:如何创建一个bordless弹出窗口

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); 

和我得到的结果是:

enter image description here

什么组合标志可以从窗口中删除黑色边框。

回答

7

只需使用WS_POPUP而不是WS_POPUPWINDOW

WS_POPUPWINDOW实际上是一组标志:

#define WS_POPUPWINDOW (WS_BORDER | WS_POPUP | WS_SYSMENU) 

WS_BORDER标志是一个负责任的黑色方形的。

+0

谢谢。我试图只用WS_POPUP创建一个窗口,但桌面上没有任何窗口。比我发现我创建了一个空背景画笔的窗口。奇怪的是,当我使用WS_POPUPWINDOW创建一个窗口(出现了一个白色)时,NULL刷子被忽略,并且我正在使用WS_POPUP创建一个窗口,通常使用背景刷。 – shadeglare

+0

@MaxFX背景画笔和WS_POPUPWINDOW不应相关,AFAIK。但是请注意,如果你的窗口没有重绘自己(WM_PAINT),并且没有背景画笔和边框,它就像变色龙一样,保持屏幕上出现的任何图像,并且很容易错过。 – rodrigo