Imgui Mouse Passing Through

Mirza1337

Platinum Üye
Katılım
26 Mar 2025
Mesajlar
226
Beğeniler
52
İletişim
ImGui'den herhangi biryere tıkladığımda oyundan biryere basıyor
bunu nasıl düzeltebilirim?

C++:
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT __stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if (GUI::getIsInit())
    {
        if (msg == WM_KEYDOWN && wParam == 0x11)
            GUI::setDoDraw(!GUI::getDoDraw());

        if (GUI::getDoDraw() && ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
            return true;
    }

    return CallWindowProcA(origin_wndproc, hWnd, msg, wParam, lParam);
}

ImGui açılınca mouse sadece imgui ile etkileşime girsin istiyorum
 
0x11 > VK_CONTROL

return true; > DefWindowProc(hWnd, msg, wParam, lParam);
 
discord verirmisin yardımcı olayim
 
Bunu kullan:
C++:
if (menuyugoster) {
    switch (msg) {
    case WM_MOUSEMOVE:
    case WM_MOUSEWHEEL:
    case WM_MOUSEHWHEEL:
    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    case WM_MBUTTONDOWN:
    case WM_MBUTTONUP:
    case WM_XBUTTONDOWN:
    case WM_XBUTTONUP:
        return true;
    }
}
Senin koduna göre:
C++:
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT __stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if (GUI::getIsInit())
    {
        if (msg == WM_KEYDOWN && wParam == 0x11)
            GUI::setDoDraw(!GUI::getDoDraw());
            
        if (GUI::getDoDraw() && ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
            return true;
            
        if (GUI::getDoDraw())
        {
            switch (msg)
            {
                case WM_MOUSEMOVE:
                case WM_MOUSEWHEEL:
                case WM_MOUSEHWHEEL:
                case WM_LBUTTONDOWN:
                case WM_LBUTTONUP:
                case WM_RBUTTONDOWN:
                case WM_RBUTTONUP:
                case WM_MBUTTONDOWN:
                case WM_MBUTTONUP:
                case WM_XBUTTONDOWN:
                case WM_XBUTTONUP:
                    return true;
                    
                case WM_KEYDOWN:
                case WM_KEYUP:
                case WM_CHAR:
                    if (wParam != 0x11)
                        return true;
                    break;
            }
        }
    }
    
    return CallWindowProcA(origin_wndproc, hWnd, msg, wParam, lParam);
}
 
Son düzenleme:
Bunu kullan:
C++:
if (menuyugoster) {
    switch (msg) {
    case WM_MOUSEMOVE:
    case WM_MOUSEWHEEL:
    case WM_MOUSEHWHEEL:
    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    case WM_MBUTTONDOWN:
    case WM_MBUTTONUP:
    case WM_XBUTTONDOWN:
    case WM_XBUTTONUP:
        return true;
    }
}
Senin koduna göre:
C++:
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT __stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if (GUI::getIsInit())
    {
        if (msg == WM_KEYDOWN && wParam == 0x11)
            GUI::setDoDraw(!GUI::getDoDraw());
           
        if (GUI::getDoDraw() && ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
            return true;
           
        if (GUI::getDoDraw())
        {
            switch (msg)
            {
                case WM_MOUSEMOVE:
                case WM_MOUSEWHEEL:
                case WM_MOUSEHWHEEL:
                case WM_LBUTTONDOWN:
                case WM_LBUTTONUP:
                case WM_RBUTTONDOWN:
                case WM_RBUTTONUP:
                case WM_MBUTTONDOWN:
                case WM_MBUTTONUP:
                case WM_XBUTTONDOWN:
                case WM_XBUTTONUP:
                    return true;
                   
                case WM_KEYDOWN:
                case WM_KEYUP:
                case WM_CHAR:
                    if (wParam != 0x11)
                        return true;
                    break;
            }
        }
    }
   
    return CallWindowProcA(origin_wndproc, hWnd, msg, wParam, lParam);
}
eyvallah bu oldu, nereden çözdüğünü söyleyebilir misin
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt