Создание окна без заголовка и рамки - PullRequest
5 голосов
/ 22 августа 2010

Как вы можете создать окно без заголовка и рамки, используя CreateWindowEx ()?И я почему вы используете '|'Оператор OR для объединения стилей вместо '&' And?

1 Ответ

6 голосов
/ 22 августа 2010
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.

Относительно того, почему вам нужно побитовое ИЛИ стили; ИЛИ объединит все значения стилей, И используется (для окон), чтобы проверить, какие стили установлены. Скажем, у нас было два стиля (WS_FOO = 1, WS_BAR = 2):

  • 1 И 2 ​​= 0 (двоичный: 01 И 10 = 00)
  • 1 ИЛИ 2 = 3 (двоичный: 01 ИЛИ 10 = 11)

См. Википедия для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...