// ref: 0x10008F31 int __fastcall OkCancel_10008F31(HWND hWnd, const CHAR *a2) { return 0; } /* { HWND v2; // ebx HDC v3; // edi void *v4; // eax int v5; // eax int result; // eax LONG v7; // [esp+14h] [ebp-20h] LONG v8; // [esp+18h] [ebp-1Ch] struct tagRECT Rect; // [esp+1Ch] [ebp-18h] HGDIOBJ h; // [esp+2Ch] [ebp-8h] LPCSTR lpchText; // [esp+30h] [ebp-4h] lpchText = a2; v2 = hWnd; if ( !a2 || !*a2 ) goto LABEL_13; if ( !hWnd ) goto LABEL_14; GetClientRect(hWnd, &Rect); --Rect.right; --Rect.bottom; v7 = Rect.right; v8 = Rect.bottom; v3 = GetDC(v2); v4 = (void *)SendMessageA(v2, 0x31u, 0, 0); h = SelectObject(v3, v4); if ( !v3 ) goto LABEL_13; v5 = strlen(lpchText); DrawTextA(v3, lpchText, v5, &Rect, 0x410u); if ( h ) SelectObject(v3, h); ReleaseDC(v2, v3); if ( Rect.bottom > v8 || Rect.right > v7 ) LABEL_14: result = 1; else LABEL_13: result = 0; return result; } */ // ref: 0x10008FEC signed int OkCancel_10008FEC() { return 0; } /* { signed int result; // eax result = 2139095040; dword_1002A2E4 = 2139095040; return result; } */ // 1002A2E4: using guessed type int dword_1002A2E4; // ref: 0x10008FF7 HGDIOBJ __stdcall OkCancel_10008FF7(HWND a1, UINT Msg, WPARAM wParam, HWND hWnd) { return 0; } /* { HWND v5; // ecx int v6; // edx HWND v7; // eax LONG v8; // eax HWND v9; // eax if ( Msg == 2 ) { ShowCursor(0); OkCancel_10009117(a1); return (HGDIOBJ)SDlgDefDialogProc(a1, Msg, wParam, hWnd); } if ( Msg <= 0x103 ) return (HGDIOBJ)SDlgDefDialogProc(a1, Msg, wParam, hWnd); if ( Msg <= 0x105 ) { v9 = (HWND)SDrawGetFrameWindow(); SendMessageA(v9, Msg, wParam, (LPARAM)hWnd); return (HGDIOBJ)SDlgDefDialogProc(a1, Msg, wParam, hWnd); } if ( Msg != 272 ) { if ( Msg != 273 ) { if ( Msg == 312 && GetWindowLongA(hWnd, -12) == 1038 ) { local_10007C2E((HDC)wParam); return GetStockObject(5); } return (HGDIOBJ)SDlgDefDialogProc(a1, Msg, wParam, hWnd); } if ( (unsigned short)wParam == 1 ) { v7 = GetFocus(); v8 = GetWindowLongA(v7, -12); v5 = a1; if ( v8 == 1109 ) { v6 = 1; goto LABEL_16; } } else { if ( (unsigned short)wParam != 2 ) { if ( (unsigned short)wParam == 1109 ) { v5 = a1; v6 = 1; LABEL_16: OkCancel_100092F5((int)v5, v6); } return (HGDIOBJ)SDlgDefDialogProc(a1, Msg, wParam, hWnd); } v5 = a1; } v6 = 2; goto LABEL_16; } ShowCursor(1); if ( !OkCancel_10009161(a1, (int)hWnd) ) SDlgEndDialog(a1, -16777216); return (HGDIOBJ)1; } */ // 10010376: using guessed type int __stdcall SDlgEndDialog(_DWORD, _DWORD); // 1001037C: using guessed type int __stdcall SDlgDefDialogProc(_DWORD, _DWORD, _DWORD, _DWORD); // 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow(); // ref: 0x10009117 void **UNKCALL OkCancel_10009117(HWND hWnd) { return 0; } /* { _DWORD *result; // eax _DWORD *v2; // esi int v3; // eax int v4; // eax result = RemovePropA(hWnd, "DLGBMP"); v2 = result; if ( result ) { v3 = *result; if ( v3 ) SMemFree(v3, "C:\\Src\\Diablo\\DiabloUI\\OkCancel.cpp", 48, 0); v4 = v2[1]; if ( v4 ) SMemFree(v4, "C:\\Src\\Diablo\\DiabloUI\\OkCancel.cpp", 50, 0); result = (_DWORD *)SMemFree(v2, "C:\\Src\\Diablo\\DiabloUI\\OkCancel.cpp", 51, 0); } return result; } */ // 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD); // ref: 0x10009161 signed int __fastcall OkCancel_10009161(HWND a1, int a2) { return 0; } /* { int v2; // esi bool v3; // zf HWND v4; // edi char *v5; // edi HWND v6; // eax HWND v7; // edi HWND v8; // edi HWND v9; // eax const CHAR *v10; // ST1C_4 HWND v11; // eax HWND v12; // edi int v14; // [esp+Ch] [ebp-20h] int v15; // [esp+10h] [ebp-1Ch] int v16; // [esp+14h] [ebp-18h] char v17; // [esp+18h] [ebp-14h] HWND v18; // [esp+20h] [ebp-Ch] const char *v19; // [esp+24h] [ebp-8h] HWND hWnd; // [esp+28h] [ebp-4h] v2 = a2; hWnd = a1; v14 = 1109; v15 = 2; v16 = 0; v18 = (HWND)SMemAlloc(8, "C:\\Src\\Diablo\\DiabloUI\\OkCancel.cpp", 110, 0); SetPropA(hWnd, "DLGBMP", v18); if ( *(_DWORD *)(v2 + 8) ) { v3 = *(_DWORD *)(v2 + 12) == 0; v19 = "ui_art\\lrpopup.pcx"; if ( v3 ) v19 = "ui_art\\lpopup.pcx"; } else if ( *(_DWORD *)(v2 + 12) ) { v19 = "ui_art\\srpopup.pcx"; } else { v19 = "ui_art\\spopup.pcx"; } v4 = GetParent(hWnd); if ( (HWND)SDrawGetFrameWindow() == v4 ) { local_10007944((int)hWnd, 0, &byte_10029448, -1, 1, (int)v19, (int *)v18, 0, 1); v5 = local_10007895(0); SDrawUpdatePalette(0, 10, v5, 0); SDrawUpdatePalette(112, 144, v5 + 448, 1); } else { v6 = GetParent(hWnd); local_10007944((int)hWnd, (int)v6, "Popup", -1, 1, (int)v19, (int *)v18, 0, 1); } v7 = GetParent(hWnd); if ( (HWND)SDrawGetFrameWindow() == v7 ) Fade_100073EF(hWnd); v8 = v18 + 1; local_100078BE((int)"ui_art\\but_sml.pcx", (int *)v18 + 1, &v17); local_10007B1B(hWnd, &v14, *(_DWORD *)v8, &v17); v9 = GetDlgItem(hWnd, 1026); v10 = *(const CHAR **)(v2 + 4); v18 = v9; SetWindowTextA(v9, v10); if ( *(_DWORD *)(v2 + 16) && OkCancel_10008F31(v18, *(const CHAR **)(v2 + 4)) ) return 0; if ( *(_DWORD *)v2 ) { v11 = GetDlgItem(hWnd, 1038); v12 = v11; if ( *(_DWORD *)(v2 + 16) && OkCancel_10008F31(v11, *(const CHAR **)v2) ) return 0; if ( v12 ) SetWindowTextA(v12, *(LPCSTR *)v2); } return 1; } */ // 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD); // 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow(); // 100103FA: using guessed type int __stdcall SDrawUpdatePalette(_DWORD, _DWORD, _DWORD, _DWORD); // ref: 0x100092F5 int __fastcall OkCancel_100092F5(int a1, int a2) { return 0; } /* { int v2; // esi int v3; // edi v2 = a2; v3 = a1; TitleSnd_1001031F(); return SDlgEndDialog(v3, v2); } */ // 10010376: using guessed type int __stdcall SDlgEndDialog(_DWORD, _DWORD); // ref: 0x1000930A int __fastcall OkCancel_1000930A(int a1, int a2, int a3) { return 0; } /* { int v4; // [esp+0h] [ebp-14h] int v5; // [esp+4h] [ebp-10h] int v6; // [esp+8h] [ebp-Ch] int v7; // [esp+Ch] [ebp-8h] int v8; // [esp+10h] [ebp-4h] v5 = a2; v6 = 0; v4 = 0; v8 = 0; v7 = a3; return SDlgDialogBoxParam(hInstance, "OK_DIALOG", a1, OkCancel_10008FF7, &v4); } */ // 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ref: 0x10009342 void __cdecl UiMessageBoxCallback() { return; } //LPCSTR __stdcall UiMessageBoxCallback(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { return 0; } /* { int v4; // eax bool v5; // sf unsigned char v6; // of size_t v7; // eax CHAR *v8; // eax int v9; // ecx LPCSTR v11; // [esp+0h] [ebp-24h] LPCSTR v12; // [esp+4h] [ebp-20h] int v13; // [esp+8h] [ebp-1Ch] BOOL v14; // [esp+Ch] [ebp-18h] int v15; // [esp+10h] [ebp-14h] int v16; // [esp+14h] [ebp-10h] LPCSTR v17; // [esp+18h] [ebp-Ch] const char *v18; // [esp+1Ch] [ebp-8h] LPCSTR v19; // [esp+20h] [ebp-4h] v11 = lpCaption; v12 = lpText; v18 = "OK_DIALOG"; v15 = 1; if ( uType & 0xF ) v18 = "OKCANCEL_DIALOG"; v14 = (uType & 0xF0) == 16 || (uType & 0xF0) == 48; v4 = 0; v13 = 0; while ( 1 ) { v19 = (LPCSTR)SDlgDialogBoxParam(hInstance, &v18[32 * v4], hWnd, OkCancel_10008FF7, &v11); if ( v19 != (LPCSTR)-16777216 ) break; v4 = v13 + 1; v6 = __OFSUB__(v13 + 1, 2); v5 = v13++ - 1 < 0; if ( !(v5 ^ v6) ) { v7 = strlen(lpText); v8 = (CHAR *)SMemAlloc(v7 + 256, "C:\\Src\\Diablo\\DiabloUI\\OkCancel.cpp", 392, 0); v16 = 0; v17 = v8; v19 = lpText; if ( *lpText ) { v9 = v16; do { if ( *v19 <= 32 ) v9 = 0; *v8++ = *v19; if ( ++v9 > 18 ) { *v8++ = 10; v9 = 0; } ++v19; } while ( *v19 ); } *v8 = 0; v12 = v17; v19 = (LPCSTR)SDlgDialogBoxParam(hInstance, v18, hWnd, OkCancel_10008FF7, &v11); SMemFree(v17, "C:\\Src\\Diablo\\DiabloUI\\OkCancel.cpp", 416, 0); if ( v19 == (LPCSTR)-16777216 ) return (LPCSTR)MessageBoxA(hWnd, lpText, lpCaption, uType); return v19; } } return v19; } */ // 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD); // 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD); // 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);