Показать сообщение отдельно

  #9  
Старый 19.02.2022, 19:31
zTechnology
Познавший АНТИЧАТ
Регистрация: 29.03.2021
Сообщений: 1,092
С нами: 2698985

Репутация: 88


По умолчанию

Цитата:
Сообщение от ImmortalDev  

Я создал

C++:





Код:
extern
IMGUI_IMPL_API LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
typedef
LRESULT
(
CALLBACK
*
WNDPROC
)
(
HWND
,
UINT
,
WPARAM
,
LPARAM
)
;
LRESULT APIENTRY
WndProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
true
&&
ImGui_ImplWin32_WndProcHandler
(
hwnd
,
uMsg
,
wParam
,
lParam
)
)
return
true
;
return
CallWindowProc
(
oriWndProc
,
hwnd
,
uMsg
,
wParam
,
lParam
)
;
}


и вызываю его в MainThread

C++:





Код:
oriWndProc
=
(
WNDPROC
)
SetWindowLongPtr
(
window
,
GWL_WNDPROC
,
(
LONG_PTR
)
WndProc
)
;


Все ок, вроде не крашит, но каковы действия дальше? Нужно как то перехватывать нажатия? Что мне дальше делать с windproc?
C++:





Код:
extern
IMGUI_IMPL_API LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
typedef
LRESULT
(
CALLBACK
*
WNDPROC
)
(
HWND
,
UINT
,
WPARAM
,
LPARAM
)
;
LRESULT APIENTRY
WndProc
(
HWND hwnd
,
UINT uMsg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
true
&&
ImGui_ImplWin32_WndProcHandler
(
hwnd
,
uMsg
,
wParam
,
lParam
)
)
return
true
;
switch
(
uMsg
)
{
case
WM_LBUTTONDOWN
:
case
WM_LBUTTONDBLCLK
:
case
WM_RBUTTONDOWN
:
case
WM_RBUTTONDBLCLK
:
case
WM_MBUTTONDOWN
:
case
WM_MBUTTONDBLCLK
:
case
WM_XBUTTONDOWN
:
case
WM_XBUTTONDBLCLK
:
case
WM_MOUSEWHEEL
:
case
WM_LBUTTONUP
:
case
WM_RBUTTONUP
:
case
WM_MBUTTONUP
:
case
WM_XBUTTONUP
:
case
WM_MOUSEMOVE
:
return
true
;
}
return
CallWindowProc
(
oriWndProc
,
hwnd
,
uMsg
,
wParam
,
lParam
)
;
}
 
Ответить с цитированием