【问题标题】:Creating a window without caption and border创建一个没有标题和边框的窗口
【发布时间】:2011-04-02 05:18:13
【问题描述】:

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

【问题讨论】:

    标签: winapi


    【解决方案1】:
    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 用于(由窗口)检查设置了哪些样式。 假设我们有两种样式(WS_FOO=1,WS_BAR=2):

    • 1 AND 2 = 0(二进制:01 AND 10 = 00)
    • 1 OR 2 = 3(二进制:01 OR 10 = 11)

    请参阅wikipedia 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2016-08-14
      • 2012-11-22
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      相关资源
      最近更新 更多