 |

06.08.2021, 22:31
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
В чем ошибка?
Код:
C++:
Код:
#include
#include
#include
#include
#include
#include
#include
#include
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
bool
windowWorking
=
false
;
bool
enable
=
true
;
static
LPDIRECT3D9 g_pD3D
=
NULL
;
static
LPDIRECT3DDEVICE9 g_pd3dDevice
=
NULL
;
static
D3DPRESENT_PARAMETERS g_d3dpp
=
{
}
;
bool
CreateDeviceD3D
(
HWND hWnd
)
;
void
CleanupDeviceD3D
(
)
;
void
ResetDevice
(
)
;
LRESULT WINAPI
WndProc
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
int
main
(
)
{
setlocale
(
LC_ALL
,
"ru"
)
;
MessageBox
(
NULL
,
_T
(
"Приложение было запущено! Чтобы управлять им - нажмите ALT + 9"
)
,
_T
(
"Информационный диалог"
)
,
MB_OK
)
;
ShowWindow
(
GetConsoleWindow
(
)
,
SW_HIDE
)
;
WNDCLASSEX wc
=
{
sizeof
(
WNDCLASSEX
)
,
CS_CLASSDC
,
WndProc
,
0L
,
0L
,
GetModuleHandle
(
NULL
)
,
NULL
,
NULL
,
NULL
,
NULL
,
_T
(
"ImGui Example"
)
,
NULL
}
;
::
RegisterClassEx
(
&
wc
)
;
HWND hwnd
=
::
CreateWindow
(
wc
.
lpszClassName
,
_T
(
"Dear ImGui DirectX9 Example"
)
,
WS_OVERLAPPEDWINDOW
,
100
,
100
,
1280
,
800
,
NULL
,
NULL
,
wc
.
hInstance
,
NULL
)
;
while
(
!
hwnd
)
{
Sleep
(
0
)
;
}
if
(
!
CreateDeviceD3D
(
hwnd
)
)
{
CleanupDeviceD3D
(
)
;
::
UnregisterClass
(
wc
.
lpszClassName
,
wc
.
hInstance
)
;
return
1
;
}
::
ShowWindow
(
hwnd
,
SW_SHOWDEFAULT
)
;
::
UpdateWindow
(
hwnd
)
;
IMGUI_CHECKVERSION
(
)
;
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
(
void
)
io
;
ImGui
::
StyleColorsDark
(
)
;
ImGui_ImplWin32_Init
(
hwnd
)
;
ImGui_ImplDX9_Init
(
g_pd3dDevice
)
;
ImVec4 clear_color
=
ImVec4
(
0.45f
,
0.55f
,
0.60f
,
1.00f
)
;
while
(
true
)
{
Sleep
(
0
)
;
if
(
enable
)
{
if
(
GetAsyncKeyState
(
49
)
&&
GetAsyncKeyState
(
18
)
)
{
CString fromClipboard
;
if
(
OpenClipboard
(
NULL
)
)
{
HANDLE hData
=
GetClipboardData
(
CF_TEXT
)
;
char
*
chBuffer
=
(
char
*
)
GlobalLock
(
hData
)
;
fromClipboard
=
chBuffer
;
GlobalUnlock
(
hData
)
;
CloseClipboard
(
)
;
}
MessageBox
(
NULL
,
_T
(
"Текст в буфере обмена:\n----------\n"
)
+
fromClipboard
+
_T
(
"\n----------"
)
,
_T
(
"Скопированный текст"
)
,
MB_OK
)
;
}
}
ImGui_ImplDX9_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
if
(
windowWorking
)
ImGui
::
ShowDemoWindow
(
&
windowWorking
)
;
{
}
ImGui
::
EndFrame
(
)
;
g_pd3dDevice
->
SetRenderState
(
D3DRS_ZENABLE
,
FALSE
)
;
g_pd3dDevice
->
SetRenderState
(
D3DRS_ALPHABLENDENABLE
,
FALSE
)
;
g_pd3dDevice
->
SetRenderState
(
D3DRS_SCISSORTESTENABLE
,
FALSE
)
;
D3DCOLOR clear_col_dx
=
D3DCOLOR_RGBA
(
(
int
)
(
clear_color
.
x
*
clear_color
.
w
*
255.0f
)
,
(
int
)
(
clear_color
.
y
*
clear_color
.
w
*
255.0f
)
,
(
int
)
(
clear_color
.
z
*
clear_color
.
w
*
255.0f
)
,
(
int
)
(
clear_color
.
w
*
255.0f
)
)
;
g_pd3dDevice
->
Clear
(
0
,
NULL
,
D3DCLEAR_TARGET
|
D3DCLEAR_ZBUFFER
,
clear_col_dx
,
1.0f
,
0
)
;
if
(
g_pd3dDevice
->
BeginScene
(
)
>=
0
)
{
ImGui
::
Render
(
)
;
ImGui_ImplDX9_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
g_pd3dDevice
->
EndScene
(
)
;
}
HRESULT result
=
g_pd3dDevice
->
Present
(
NULL
,
NULL
,
NULL
,
NULL
)
;
if
(
result
==
D3DERR_DEVICELOST
&&
g_pd3dDevice
->
TestCooperativeLevel
(
)
==
D3DERR_DEVICENOTRESET
)
ResetDevice
(
)
;
if
(
GetAsyncKeyState
(
57
)
&&
GetAsyncKeyState
(
18
)
)
{
windowWorking
=
!
windowWorking
;
}
}
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;
CleanupDeviceD3D
(
)
;
::
DestroyWindow
(
hwnd
)
;
::
UnregisterClass
(
wc
.
lpszClassName
,
wc
.
hInstance
)
;
return
0
;
}
bool
CreateDeviceD3D
(
HWND hwnd
)
{
if
(
(
g_pD3D
=
Direct3DCreate9
(
D3D_SDK_VERSION
)
)
==
NULL
)
return
false
;
// Create the D3DDevice
ZeroMemory
(
&
g_d3dpp
,
sizeof
(
g_d3dpp
)
)
;
g_d3dpp
.
Windowed
=
TRUE
;
g_d3dpp
.
SwapEffect
=
D3DSWAPEFFECT_DISCARD
;
g_d3dpp
.
BackBufferFormat
=
D3DFMT_UNKNOWN
;
// Need to use an explicit format with alpha if needing per-pixel alpha composition.
g_d3dpp
.
EnableAutoDepthStencil
=
TRUE
;
g_d3dpp
.
AutoDepthStencilFormat
=
D3DFMT_D16
;
g_d3dpp
.
PresentationInterval
=
D3DPRESENT_INTERVAL_ONE
;
// Present with vsync
//g_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; // Present without vsync, maximum unthrottled framerate
if
(
g_pD3D
->
CreateDevice
(
D3DADAPTER_DEFAULT
,
D3DDEVTYPE_HAL
,
hwnd
,
D3DCREATE_HARDWARE_VERTEXPROCESSING
,
&
g_d3dpp
,
&
g_pd3dDevice
)
Release
(
)
;
g_pd3dDevice
=
NULL
;
}
if
(
g_pD3D
)
{
g_pD3D
->
Release
(
)
;
g_pD3D
=
NULL
;
}
}
void
ResetDevice
(
)
{
ImGui_ImplDX9_InvalidateDeviceObjects
(
)
;
HRESULT hr
=
g_pd3dDevice
->
Reset
(
&
g_d3dpp
)
;
if
(
hr
==
D3DERR_INVALIDCALL
)
IM_ASSERT
(
0
)
;
ImGui_ImplDX9_CreateDeviceObjects
(
)
;
}
// Forward declare message handler from imgui_impl_win32.cpp
extern
IMGUI_IMPL_API LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
// Win32 message handler
LRESULT WINAPI
WndProc
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
ImGui_ImplWin32_WndProcHandler
(
hWnd
,
msg
,
wParam
,
lParam
)
)
return
true
;
switch
(
msg
)
{
case
WM_SIZE
:
if
(
g_pd3dDevice
!=
NULL
&&
wParam
!=
SIZE_MINIMIZED
)
{
g_d3dpp
.
BackBufferWidth
=
LOWORD
(
lParam
)
;
g_d3dpp
.
BackBufferHeight
=
HIWORD
(
lParam
)
;
ResetDevice
(
)
;
}
return
0
;
case
WM_SYSCOMMAND
:
if
(
(
wParam
&
0xfff0
)
==
SC_KEYMENU
)
return
0
;
break
;
case
WM_DESTROY
:
::
PostQuitMessage
(
0
)
;
return
0
;
}
return
::
DefWindowProc
(
hWnd
,
msg
,
wParam
,
lParam
)
;
}
|
|
|

07.08.2021, 11:09
|
|
Познающий
Регистрация: 06.09.2018
Сообщений: 32
С нами:
4045092
Репутация:
23
|
|
Что тебе не понятно со слов "неразрешенный внешний символ"?
Определение символа Direct3DCreate9 он ищет и не может найти. Он собрал все объектники и по итогу не разрешил данный символ (функцию, если тебе так будет понятнее).
Подключи directx sdk какую-нибудь с июня 10 года
|
|
|

07.08.2021, 15:24
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Сообщение от .deserve
Что тебе не понятно со слов "неразрешенный внешний символ"?
Определение символа Direct3DCreate9 он ищет и не может найти. Он собрал все объектники и по итогу не разрешил данный символ (функцию, если тебе так будет понятнее).
Подключи directx sdk какую-нибудь с июня 10 года
Я абсолютно каждую программу завершил и все равно пишет это, не знаешь, как исправить?
В диспетчере задач закрыл, справа снизу закрыл всё, не знаю что делать
А код я брал из примера dx9

|
|
|

07.08.2021, 16:55
|
|
Познающий
Регистрация: 06.09.2018
Сообщений: 32
С нами:
4045092
Репутация:
23
|
|
Сообщение от Smeruxa
Я абсолютно каждую программу завершил и все равно пишет это, не знаешь, как исправить?
В диспетчере задач закрыл, справа снизу закрыл всё, не знаю что делать
А код я брал из примера dx9
Установщик не смог перебить твои рантайм vc++ пакеты входящие в группу распространяемых.
Я на убунте, не знаю че там щас с 10 виндой. Но попробуй через панель управления зайти в менеждер всех бинарников (программы и компоненты вроде) и удалить оттуда все что связано с vc++ redistributable.
Он по ходу сам поставит нужные, ну опираясь на то, что он пишет в логе.
Я бы на твоем месте запомнил что там у тебя за пакеты стоят (какой версии), чтобы потом если что откатить. Ну gta sa у тебя точно работать будет. Проблемы могут возникнуть с другими играми. Ну вообще я не думаю, что возникнут. Не бойся.
Если в конце он их не накатит - накати сам: ][оба
Другие игры просто сами могут ставить нужные для работы рантайм пакеты, и часто они у всех разные. Но при повторной установке они все равно их накатят обратно
|
|
|

07.08.2021, 18:41
|
|
Новичок
Регистрация: 07.08.2021
Сообщений: 2
С нами:
2509944
Репутация:
0
|
|
#pragma comment (lib, "d3d9.lib")
Только перед этим в каталоги библиотек пропиши путь к DirectX SDK
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|