Код
#define _CRT_SECURE_NO_WARNINGS
#include "homm3.h"
Patcher* _P;
PatcherInstance* _PI;
static _bool_ plugin_On = 0;
void __fastcall Scroll_TestDlg_Callback(int klick_id, _Dlg_* dlg)
{
klick_id ? dlg->GetItem(30722)->SetEnabled(1) : dlg->GetItem(30722)->SetEnabled(0); // включить или выключить кнопку ок
sprintf(o_TextBuffer, "%d", klick_id);
((_DlgStaticText_*)dlg->GetItem(14))->SetText(o_TextBuffer);
// ((_DlgStaticText_*)dlg->GetItem(14))->SetText(va_cstr("%d", klick_id)); // id текста = 14
dlg->Redraw(TRUE);
}
void New_TestDlg_Show(int x, int y)
{
_Dlg_* dlg = _CustomDlg_::Create(-1, -1, 297, 215, DF_SCREENSHOT | DF_SHADOW, NULL); // создали диалог
dlg->AddItemByZOrder(_DlgStdBackground_::Create(0, 0, dlg->width, dlg->height, 0, 0, o_GameMgr->GetMeID()), 0); // рамка в цвете игрока
dlg->AddItem(_DlgStaticText_::Create(0, 20, dlg->width, 30, "Переместить ползунок?", "bigfont.fnt", 7, 1, ALIGN_H_CENTER | ALIGN_V_TOP, 0)); // заголовок
dlg->AddItem(_DlgStaticText_::Create(0, 60, dlg->width, 50, "Вы можете перемещать ползунок, \n и вправо, и влево!",
"medfont.fnt", 1, 0, ALIGN_H_CENTER | ALIGN_V_TOP, 0)); // описание
dlg->AddItem(_DlgScroll_::Create(30, dlg->height -85, 234, 16, 40, 9, (_ptr_)Scroll_TestDlg_Callback, 0, 18, 0)); // создать ползунок
// создаем отображенное число, зависимое от ползунка в поле
dlg->AddItem(_DlgStaticText_::Create(137, dlg->height -52, 30, 30, "0", "medfont.fnt", 1, 14, ALIGN_H_CENTER | ALIGN_V_CENTER, 0)); // id текста = 14
// делаем кнопку ок
dlg->AddItem(_DlgStaticPcx8_::Create(19, dlg->height -52, 0, "Box64x30.pcx"));
dlg->AddItem(_DlgButton_::Create(20, dlg->height -51, 64, 30, 30722, "iOkay.def", 0, 1, 1, 28, 2));
dlg->GetItem(30722)->SetEnabled(0); // отключенная кнопка ok
// делаем кнопку отмена
dlg->AddItem(_DlgStaticPcx8_::Create(213, dlg->height -52, 0, "Box64x30.pcx"));
dlg->AddItem(_DlgButton_::Create(214, dlg->height -51, 64, 30, 30721, "iCancel.def", 0, 1, 1, 1, 2));
// b_MouseMan_SetCursor(0,0);
CALL_3 (void, __thiscall, 0x50CEA0, o_MouseMgr, 0, 0); // установить курсор(0,0)
dlg->Run();
dlg->Destroy(TRUE);
}
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:
if ( !plugin_On )
{
plugin_On = 1;
_P = GetPatcher();
_PI = _P->CreateInstance("HD.Plugin.TestPlugin");
}
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}