Как полностью скрыть курсор? - PullRequest
1 голос
/ 03 апреля 2020

Когда я вызываю ShowCursor(0) (что, кстати, не принимает HWND, это странно), курсор скрывается, но когда я делаю специальное действие, например, изменяю размер окна или перетаскиваю файла, появится курсор, соответствующий этому действию. Я не хочу видеть курсор, какое бы действие ни делал пользователь. Если вам интересно почему, это потому, что я хотел бы нарисовать его с помощью OpenGL.

У меня есть всплывающее и многоуровневое окно:

#define UNICODE
#include <windows.h>
#include <dwmapi.h>

LRESULT CALLBACK wnd_proc(HWND hWnd, UINT uMsg, WPARAM wp, LPARAM lp){
    switch(uMsg){
        case WM_CREATE: return 0;
        case WM_NCHITTEST: return HTBOTTOM;
        case WM_DESTROY: PostQuitMessage(0); return 0;
        default: return DefWindowProc(hWnd, uMsg, wp, lp);
    }
}

HDC hDC; HGLRC hRC;

int main(void){
    WNDCLASSEX wcx = {};
    wcx.cbSize = sizeof(WNDCLASSEX);
    wcx.lpfnWndProc = wnd_proc;
    wcx.lpszClassName = L"Win32Class";
    wcx.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
    wcx.hbrBackground = CreateSolidBrush(0x00000000);
    wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
    RegisterClassEx(&wcx);

    HWND hWnd = CreateWindowEx(WS_EX_ACCEPTFILES | WS_EX_LAYERED, wcx.lpszClassName,
        L"Win32Window", WS_POPUP | WS_VISIBLE, 50, 50, 800, 400, NULL, NULL, NULL, NULL);

    SetLayeredWindowAttributes(hWnd, RGB(200, 0, 200), 0, LWA_COLORKEY);
    ShowCursor(0);

    /*DWM_BLURBEHIND blur = {0};
    blur.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
    blur.fEnable = 1;
    blur.hRgnBlur = CreateRectRgn(0, 0, -1, -1);
    DwmEnableBlurBehindWindow(hWnd, &blur);*/

    MSG msg; while(GetMessage(&msg, NULL, 0, 0)){
        DispatchMessage(&msg);
    }
}

Это усеченная часть моего тестового файла. OpenGL не включен, но мне просто нужно знать, как удалить курсор.

Если вы скомпилируете и выполните его, вы увидите, что когда курсор находится в окне, он не виден, но когда вы изменить размер окна, курсор появляется, так же, как при перетаскивании файла.

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