如何使用CreateWindowEx()创建没有标题和边框的窗口?我为什么要使用'|' OR运算符组合样式而不是'&'并且?

最佳答案

int WINAPI WinMain(....)
{
    MSG msg;
    WNDCLASS wc={0};
    wc.lpszClassName="MyClass";
    wc.lpfnWndProc=DefWindowProc;//You MUST use your own wndproc here
    wc.hInstance=hInstance;
    wc.hbrBackground=(HBRUSH)(COLOR_3DFACE+1);
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    if (!RegisterClass(&wc)) {/*Handle Error*/}
    HWND hwnd;
    hwnd=CreateWindowEx(0,wc.lpszClassName,0,WS_POPUP|WS_VISIBLE|WS_SYSMENU,9,9,99,99,0,0,0,0);
    if (!hwnd) {/*Handle Error*/}
    while(GetMessage(&msg,0,0,0)>0)DispatchMessage(&msg);
    return 0;
}

如果需要边框,则可以添加WS_BORDER或WS_DLGFRAME(不能同时添加)。如果您不想在任务栏中显示窗口,请添加WS_EX_TOOLWINDOW扩展样式。

至于为什么需要按位或样式; OR将结合所有样式值,AND(用于Windows)检查设置了哪些样式。
假设我们有两种样式(WS_FOO = 1,WS_BAR = 2):
  • 1 AND 2 = 0(二进制:01 AND 10 = 00)
  • 1 OR 2 = 3(二进制:01 OR 10 = 11)

  • 有关更多信息,请参见wikipedia

    关于winapi - 创建一个没有标题和边框的窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3540605/

    10-13 08:27